|
1、mov al, c5h
add al, 93h
相加后,al值为 158h ,而 al 为8位寄存器,只能存放两位16进制数据,最高位1 “丢失",ax = 0058h (丢失:进位值不能再8位寄存器中保存,但CPU并不是真正的丢弃这个进位值,而是存在了CF当中。
注意:al 是作为一个独立的8位寄存器来使用,和 ah 没有关系,CPU执行这条指令时认为 ah 和 al 是两个不相关的寄存器,不能错误的认为,进位会存储在 ah 中。add al, 93h 进行的只是 8 位运算。
若执行 add ax, 93h,结果 ax = 0158h,这里进行的是16位的运算。
2、在进行数据传送或运算时,要注意质量的两个操作对象的位数应当是一致的。
mov ax, bx
mov bx, cx
mov ax, 18h
mov al, 18h
add ax, bx
add ax, 20000
以上表达式都是正确的表达式,以下则是错误的表达式:
mov ax, bl
mov bh, ax
mov al, 20000
add al, 200h
3、书中第30页中的一个错误!
书中:
8086启动或复位后,CS:F000H,IP:FFFFH--->这样,算过来就是CPU从内存FFFFF单元中读取指令执行,显然不对。
更正:
8086启动或复位后,CS:FFFFH,IP:0000H--->换算过来,CPU就是从FFFF0H单元读取第一条指令。
4、8086不支持数据直接送入段寄存器的操作,如 mov ds, 1000H 这样的表达式是错误的。 |
|