assume cs:code,ds:data,ss:stack
;数据段 代码段可直接获取数据段中数据, 相当于高级语言中的局部变量
stack segment
db 20 dup(0) ;定义数据相当于是定义了段地址
stack ends
;数据段 代码段可直接获取数据段中数据, 相当于高级语言中的全局变量
data segment
db 20 dup(0) ;定义数据相当于是定义了段地址
db 'hello world!$' ;$ 表示结尾标记
data ends
code segment
start:
;设置ds和ss
mov ax,data
mov ds,ax
mov ax stack
mov ss,ax
;业务逻辑代码
mov dx,14h
mov ah 9h ;9h表示调用显存 从dx总读取偏移地址对应的数据
int 21h
;退出程序
mov ah 4ch
int 21h
code ends
end start ;标记名称可自定义
使用数据别名优化代码
第一种:
assume cs:code,ds:data,ss:stack
;数据段 代码段可直接获取数据段中数据, 相当于高级语言中的局部变量
stack segment
db 20 dup(0) ;定义数据相当于是定义了段地址
stack ends
;数据段 代码段可直接获取数据段中数据, 相当于高级语言中的全局变量
data segment
db 20 dup(0) ;定义数据相当于是定义了段地址
str: db 'hello world!$' ;$ 表示结尾标记 str:表示指向该数据的地址
data ends
code segment
start:
;设置ds和ss
mov ax,data
mov ds,ax
mov ax stack
mov ss,ax
;业务逻辑代码
mov dx,str
mov ah,9h ;9h表示调用显存 从dx总读取偏移地址对应的数据
int 21h
;退出程序
mov ah 4ch
int 21h
code ends
end start ;标记名称可自定义
第二种:
assume cs:code,ds:data,ss:stack
;数据段 代码段可直接获取数据段中数据, 相当于高级语言中的局部变量
stack segment
db 20 dup(0) ;定义数据相当于是定义了段地址
stack ends
;数据段 代码段可直接获取数据段中数据, 相当于高级语言中的全局变量
data segment
db 20 dup(0) ;定义数据相当于是定义了段地址
str db 'hello world!$' ;$ 表示结尾标记
data ends
code segment
start:
;设置ds和ss
mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
;业务逻辑代码
mov dx,offset str;获取别名对应数据的偏移地址
mov ah, 9h ;9h表示调用显存 从dx总读取偏移地址对应的数据
int 21h
;退出程序
mov ah, 4ch
int 21h
code ends
end start ;标记名称可自定义
知识点:
第一种 方案使用str:
str: db 'hello world!$' ; str:表示指向该数据的地址
;业务逻辑代码
mov dx, str
第二种 方案使用offset
str db 'hello world!$' ;$ 表示结尾标记 str表示指向该数据的内容
;业务逻辑代码
mov dx,offset str;获取别名对应数据的偏移地址 如果直接使用str表示将hello world!中的h赋值给dx