王爽汇编3-4

比如我们要读取10000H单元的内容,可以用如下的程序段进行:
mov bx, 1000
mov ds, bx
mov al,[0]
为什么8086CPU不支持将数据直接送入段寄存器的操作?这属于8086CPU硬件设计的问题,我们只要知道这一点就行了。

add和sub指令同mov一样,都有两个操作对象。
mov 寄存器,数据
mov 寄存器,寄存器
mov 寄存器,内存单元
mov 内存单元,寄存器

8086CPU的入栈和出栈操作都是以字为单位进行的。
push 寄存器
push 内存单元

任意时刻,SS:SP指向栈顶元素。
8086CPU中,入栈时,栈顶从高地址向低地址方向增长。

栈顶溢出将环绕。
 

1. segment和ends的功能是定义一个段,segment说明一个段开始,ends说明一个段结束。一个段必须有一个名称来标识,使用格式为:
段名 segment
XXX
段名 ends
2. end是一个汇编程序的结束标记,编译器在编译汇编程序的过程中,如果碰到了伪指令end,就结束对源程序的编译。
3. assume伪指令的含义为“假设”,它假设某一段寄存器和程序中的某一个用segment...ends定义的段相关联。

连接的作用:
1. 当源程序很大时,可以将它分为多个源程序文件来编译,每个源程序编译成为目标文件后,再用连接程序将他们连接到一起,生成一个可执行文件。
2. 程序中调用了某个库文件中的子程序,需要将这个库文件和该程序生成的目标文件连接到一起,生成一个可执行文件。
3. 一个源程序编译后,得到了存有机器码的目标文件,目标文件中的有些内容还不能直接用来生成可执行文件,连接程序将这些内容处理为最终的可执行信息。

猜你喜欢

转载自blog.csdn.net/sumaoqing123/article/details/87738392