汇编源程序
伪指令
汇编用 伪指令
来作为 关键字
segment/ends
区分代码块
所有代码必须在代码块中
格式
my_code_name segment
; 这里写具体的汇编代码
; 这里写具体的汇编代码
; 这里写具体的汇编代码
; 这里写具体的汇编代码
my_code_name ends
数据定义伪指令
[变量名] 数据定义伪指令 初始值
数据定义伪指令对照表
数据定义伪指令 | 意义 |
---|---|
val_str db 'string' | 定义字符串 |
val_byte db 1 | 定义字节型数据(1Byte) |
val_dword dw 2 | 定义字型数据(2Byte) |
val_ddword dd 4 | 用2个字来组成一个双字(4Byte) |
val_dq dq 8 | 由4个字组成一个四字类型(8Byte) |
val_dt dt 10 | 由10个字节组成一个十字节类型(10Byte) |
val_array db 256 dup(0) | 定一个 db类型的数组,长度为 256,初始值为0 |
val_array2 db 10 dup(1,2,3 7 dup(0)) | 定一个 db类型的数组,长度为 10,前三个初始值为1,2,3 后7个初始值为0 |
其他 伪指令
start:
定义代码 标签,我们这里生命为 start
相当于 c中的main
函数
end [lable]
:
结束某个 标签
offset
:
取某个变量的地址
seg
:
获取某个代码块的地址
assume
:
向编译器生命特殊的代码段
hello world
; 我们在这里设置
; cs为 代码运行段
; ds为 数据段
; ss为栈空间
assume cs:code,ds:this_data,ss:this_stack
this_stack segment stack
db 256 dup(0)
this_stack ends
this_data segment
str1 db 'hello world$'
this_data ends
code segment
; 类似main函数作为asm起始点
start:
;锁定栈
mov ax, seg this_stack
mov ss, ax
;锁定数据区
mov ax, seg this_data
mov ds,ax
; 获取字符串偏移
mov dx,offset str1
; 显示字符串
mov ah,09h
int 21h
; 安全退出
mov ah,4ch
int 21h
code ends
end start