45.第一个完整汇编源程序:
e.g:
assume cs:code
code segment
start: mov ax,0123H
mov bx,0456H
add ax,bx
add ax,ax
mov ax,4c00H
int 21H
code ends
end
a)汇编指令:有对应的机器码
b)伪指令:给编译器执行的指令
在例子中出现了三种伪指令:
XXXXX segment
XXXXX ends
segment和ends是一对成对使用的伪指令.写可以被编译的汇编程序时必须要用到的一对伪指令.segment和ends的功能是定义一个段,segment说明一个段开始,ends说明一个段结束.一个段必须有一个名称来标识,使用格式为:
code(段名) segment //定义一个段,段名为code
code(段名) ends //名称为code的段到此结束
46.一个汇编程序是由多个段组成的,这些段被用来存放代码,数据或当作栈空间来使用.一个源程序中所有被计算机处理的信息:指令,数据,栈等可以被划分到不同段中.
47.end:是一个汇编程序结束标记,在编译过程中,如果碰到伪指令end,就结束编译.----不要混淆end(用于结束编译)和ends(用于结束段).
48.assume:假设,它假设某一段寄存器和程序中的某一个用segment...ends定义的段相关联.通过assume说明这种关联,在需要的情况下,编译程序可以将段寄存器和某一个具体的段相联系.记着用assume可以将有特定用途的段和相关寄存器关联起来即可.
49.标号:如code,一个标号指代了一个地址 .code在segment前面,做为一个段的名称,这个段的名称最终将被编译,连接程序处理为一个段的段地址.
50.程序的结构:
a)定义一个段;(segment...ends)
b)在段中写入汇编命令;
c)指出在哪个地方结束;(end)
d)code被当作代码段来使用,所以和cs寄存器关联起来.
assume cs:code
code segment
mov ax,2
add ax,ax
add ax,ax
code ends
end
51.程序返回:一个程序结束后,将CPU控制权交还给使它得以运行的程序,这个过程称为程序返回.----How...?
在程序末尾添加返回的程序段:
mov ax,4c00H
int 21H
可以实现程序的返回.
52.a)段结束:段名 ends 伪指令 编译器执行
b)程序结束: end 伪指令 编译器执行
c)程序返回:mov ax,4c00H int 21H 汇编指令 CPU执行
53.汇编程序过程:编程-->编译-->连接-->加载-->内存中的程序-->运行.