《汇编语言第三版》王爽著 ------读书笔记
1) 由于系统版本不同 的 缘故,数据段ffff:0 区间的值 可能存在 差别
;AX = 5BEA
;AX = 5CCA
;BX = 30F0
;BX = 6021
; SP = 00FE, 修改的内存单元地址是 2200:00FE 内容为 5CCA
; SP = 00FC, 修改的内存单元地址是 2200:00FC 内容为 6021
; SP = 00FE, ax = 6021
; SP = 00FE, bx = 5CCA
; SP = 00FE, 修改的内存单元地址是 2200:00FE 内容为 30F0
; SP = 00FC, 修改的内存单元地址是 2200:00FC 内容为 2F31
2)
可能由于系统的关系, 我的dos系统 值改变在 2200:00f0 这个区间 和寄存器对比可知,栈内改变的值 包括 AX = 5BEA,CS:IP = 0770:0012 和未知数据 01A6
这是由于T指令单步执行中断,为了保护现场,中断例程把寄存器的数据压入栈中(操作系统中内中断的知识)
具体的需要学习后面的章节内中断才能理解
注意
在debug中
例:
只有debug才可以使用【...】
在debug中,无法用H修饰,输入的数据都为16进制数字
在编译器中
①以字母开头的十六进制数值,必须在前面加 0
mov ax,ff (错误)
mov ax,0ff(正确)
②数字不加 H修饰的话,数据为十进制,编译后转16进制
例:
mov ax, 16 --->mov ax,10(十六进制)
mov ax, 16H --->mov ax,16(十六进制)
③
使用编译器写指令时不可用【...】否则会被编译器解释为 ...
例: mov ax[0] 解释为 mov ax,0000