对一个简单汇编程序分析
程序员文章站
2022-05-03 15:52:59
...
程序:
assume cs:codesg
codesg segment
mov ax,0123H
mov bx,0456H
add ax,bx
add ax,ax
mov ax,4c00H
int 21H
codesg ends
end
伪指令:
伪指令是写给编译器看的,CPU不会执行,在源程序中,包括两种指令,一个是汇编指令,一个是伪指令。汇编指令会生成对应的机器码,而伪指令不会生成机器码,最终不会被CPU执行
- segment和ends
segment和ends是一对成对使用的伪指令,这是在写可被编译器编译的汇编程序时必须要用到的一对伪指令。
功能:定义一个段,segment说明段的开始,ends说明段的结束,一个段必须有一个名称来标识,格式:
段名 segment
:
段名 ends
比如上面程序中:
codesg segment
:
codesg ends
一个汇编程序由多个段组成,一个有意义的汇编程序中至少要有一个段,这个段用来代码
-
end
功能:一个汇编程序的结束标记
注意:要分清楚end和ends,end是整个程序结束的标志,ends是一个段的结束 -
assume
功能:假设某一段寄存器和程序中的某一用segment…ends定义的段相关联
源程序中的程序:
源程序就是我们写的代码,可以将源程序文件中所有的内容称为源程序,最终由计算机执行的才叫程序
标号:
汇编源程序中,除了汇编指令和伪指令外,还有些标号,比如codesg。一个标号指代一个地址,比如codesg在segment前面,作为一个段的名称,这个段的名称最终将被编译,连接程序处理为一个段的段地址
程序的返回:
mov ax,4c00H
int 21H
这两条指令所实现的功能就是程序返回
在最后再说一下程序是由段构成的