字节类型
db 100 ;define byte db 11000000b db 0b10101111
定义一个字
dw 0xaa55 ;define word
定义双字节
dd 0x12345678 ;define doubleword
定字符串
db “helloworld”
定义一个段
segment ends 是一对成对使用的伪指令,一个段必须有一个名称来标识
xxx segment
...
xxx ends
一个汇编程序由多个段组成,用来存放代码,数据,或者当作栈空间使用。 end伪指令就真正结束了对源程序的编译,这也是必须的。
assume ,寄存器和段的关联假设,如图就假定代码段寄存器是codesg
汇编源程序
伪指令:编译器处理
汇编指令: 编译为机器码
下面看一下源程序和可执行程序
标号
一个标号指代了一个地址 codesg: 放在segment的前面,作为一个段的名称,这个段的名称最终将被编译、连接程序处理为一个段的段地址。
assume cs:abc ;段和寄存器关联
abc segment ;定义一个段
mov ax ,2
add ax ,ax
abc ends ;结果一个段
end ;程序结束
程序返回
我们的程序最先以汇编指令的形式存在源程序中,经编译、连接后转变为机器码,存储在可执行文件中,那么,它怎样得到运行呢?(讨论)
现在,我们知道,一个程序结束后,将CPU的控制权交还给使它得以运行的程序,我们称这个过程为 : 程序返回。
如何返回呢?
下面这两条指令即可
mov ax 4c00h
int 21h