汇编 | loop和[bx]指令解析篇
编译运行过程
- 编程 :asm
- 编译:obj
- 连接:exe
- 加载内存中的程序运行
DS寄存器是存的是程序段地址,IP是程序偏移地址,DS:IP是程序起点,程序前面先创建PSP(256字节)(程序段前缀)的数据区,DOS利用PSP和加载的程序进行通信,256字节后为程序区。CS:IP是程序入口,存在程序区。
inc bx是bx中的内容加1
注意点:
- 在cx中存放循环的次数
- loop指令中的标号所标识地址要在前面
- 要循环执行的程序段,要写在标号和loop指令的中间
程序框架:
编写汇编源程序时,数据不能以字母开头,要在前面加“0”。如mov ax 0FFFFH
loop s的原理是cx减一后不为零,loop s是将IP设置为s,实现跳转。s其实是跳转到上一个的地址。
DosBox 中g命令+断点的地址,Debug中的断点操作。使用p命令可跳过循环loop,直接到(cx=0),T命令是实现一步一步执行。
[bx]:内存单元的偏移地址是bx,如果段前缀没有加任何段地址限定,如cs:[bx],则段地址默认在ds寄存器中。
特别注意: (段地址默认ds寄存器)
Debug中所有的数据都是用16进制表示
汇编编译器(源程序):16进制(后带H),十进制(不接)。
文章目录
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。