曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 5570|回复: 0
打印 上一主题 下一主题

[8086] 读书笔记--《汇编语言》

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34395
跳转到指定楼层
楼主
发表于 2009-3-31 23:05:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1、mov  al, c5h
      add  al,  93h
相加后,al值为 158h ,而 al 为8位寄存器,只能存放两位16进制数据,最高位1 “丢失",ax = 0058h (丢失:进位值不能再8位寄存器中保存,但CPU并不是真正的丢弃这个进位值,而是存在了CF当中。
注意al  是作为一个独立的8位寄存器来使用,和 ah 没有关系,CPU执行这条指令时认为 ahal 是两个不相关的寄存器,不能错误的认为,进位会存储在 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 这样的表达式是错误的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-5-3 23:54 , Processed in 0.077778 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表