汇编学习2019-10-21
第五章
注意事项
- 汇编源程序中,不能以字母开头,要在前面加0
1
mov ah,0ffffh
- Debug 和 masm编译器对形如
mov ax,[idata]
这类指令在解释上的不同。
debug对其解释为[idata]
的一个内存单元,而编译器解释为数据idata
- 在汇编源程序中
[idata]
的用法- 如果idata是实数,必须显式的在[]前面给出段地址
mov al,ds:[0]
,或者用寄存器中的值当做段地址(段前缀)mov al,ds:[bx]
- 如果
idata
代表一个寄存器bx ax ...
则[bx]
直接代表了bx寄存器中地址处的值
- 如果idata是实数,必须显式的在[]前面给出段地址
段前缀
出现在访问内存单元的指令中,用于显式的指明内存单元的段地址的
1 | ds: |
在汇编语言中称为段前缀
安全的代码区域
在一般PC机中,DOS方式下,DOS和其他合法程序一样不会使用 0:200~0:2ff(00200h~002ffh)
的256字节,这段空间是安全的,进入debug后查看一下这段内存空间,全是0表明没有被使用。
第5章课后实验
- 将
mov ax,4c00H
之前的指令复制到0:200
处:
1 | cs:code |
mov cx,18H 解释: 将程序debug后发现代码段 mov ax,4c00H 地址为0017H.
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Rick!
评论