汇编第四、五章知识总结

第四了解汇编源程序从编写→调试

1.简单的汇编源程序结构:

① 组成

② 几个常用的伪指令

③ 两条特殊指令

(a) 指令

产生机器码;由CPU执行;是程序执行的关键

(b) 伪指令

不产生机器码;由汇编器处理;

做一些辅助性操作,如: 界定段的起止,界定程序结束位置等

(c) 标号、注释等

不产生机器码;由汇编器处理;

常与伪指令配合使用,做一些辅助性操作

2.注意:

①     编写汇编源程序时,默认是十进制。对于十六进制,需手动添加H。如:

mov  ax, 30H  debug工具中默认是十六进制。二者不要混淆。

② 使用debug调试时,调试的必须是得到的可执行文件,且要带扩展名。即debug  ××.exe

③ 使用debug ××.exe调试时,首次进入调试界面时,寄存器CX中存放的是可执行文件机器码长度

可以通过u命令,结合CS、IP、CX的值,对*.exe文件反汇编,得到汇编源程序。单步调试时,调试到int 21h这条时,使用p命令。

1步,编写汇编程序文件example.asm  (使用任何文本编辑器均可)

2步,对example.asm进行汇编,得到目标文件example.obj

3步,对example.obj进行链接,得到可执行文件example.exe

4步,执行。

5步,使用debug调试可执行文件example.exe

 

5章 [BX]和loop

1. 内存单元间接表示: [bx]

[bx]表示表示内存单元

可以使用bx间接访问内存单元。默认,段地址在ds

2. loop指令

(1) 语法格式

loop  标号

(2) CPU执行指令过程

  (cx) ← (cx) - 1

   判断cx的值是否为0。

      如果(cx) ≠ 0,跳转到标号处执行;

      如果(cx) = 0, 执行loop后面的其它指令。

总结:

loop指令可以用来实现循环。需要和cx配合使用。

框架:

mov cx, 循环次数

标号(需要循环执行的指令片段)

                   …

            loop   标号

t命令:

单步执行;遇loop会进入循环内部继续单步执行;

                遇int会进入中断程序内继续单步执行;

p命令:

单步执行;遇loop或int会当做整体执行,不进入内部单步

g命令:

执行到指定地址;或遇程序结束或int,则终止执行

3. loop指令和[bx]的联合应用

(1) 指令中类型匹配、结果超范围问题

(2) inc指令

inc    寄存器        inc  bx          bx ← (bx) + 1

inc    内存单元      inc [3]     ds:3 ← ((ds)×16 +3) + 1

4.注意事项:

(1) 在综合应用编程中,要注意:

     ① 指令中操作数类型是否匹配;

     ② 结果是否会超出寄存器或内存单元表示范围;

(2) 可综合应用loop, [bx], inc指令实现循环,

     简化汇编源程序

5.编写程序注意事项:

段前缀

安全内存空间

反汇编中问题处理

6.总结:

内存单元间接表示: [bx]

loop指令

loop指令和[bx]的联合应用

其它Tips:

 inc指令、段前缀、安全内存空间

 对于内存单元表示[0]的反汇编处理

 debug中的命令: t, p, g

原文地址:https://www.cnblogs.com/jasonIL/p/10054165.html