. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(CPU工作原理)
主题 : :  关于第2版书第19页的疑问???  [待解决] 回复[ 16次 ]   点击[ 409次 ]  
xiaobatian
[帖 主] [ 发表时间:2010-11-18 13:28 ] 
荣誉值:0
信誉值:0
注册日期:2010-11-08 10:58
19页中间有这样两段话:

    在进行数据传送或运算时,要注意指令的两个操作对象的位数应当是一致的,例如:
①mov ax,bx
②mov bx,cx
③mov ax,18H
④mov al,18H
⑤add ax,bx
⑥add ax,20000
等都是正确的指令,而
⑦mov ax,bl                 (在8位寄存器和16位寄存器之间传送数据)
⑧mov bh,ax                 (在16位寄存器和8位寄存器之间传送数据)
⑨mov al,20000              (8位寄存器最大可存放值为255的数据)
⑩add al,100H               (将一个高于8位的数据加到一个8位寄存器中)
等都是错误的指令,错误的原因都是指令的两个操作对象的位数不一致.

先看上面一段里3和4,将3和4"合并"一下就可以写成mov ax,al(因为al和ax都为18H),这样是正确的?

再看下面一段里7说mov ax,bl是错误的???mov ax,al是正确的,mov ax,bl却是错误的?如果说位置一致性,上面那个也是错误的,第4句是不是错误的呢?
happychenbee
[第14楼] [ 回复时间:2011-01-07 09:26 ] 
荣誉值:0
信誉值:0
注册日期:2011-01-07 09:21
回复:[第11楼]
------------------
楼主,你的困惑在于把八位寄存器与八位常数混在一起了。八位常数18h电脑会自动高位补零,“凑”成十六位,以满足匹配要求;而八位寄存器是硬性规定,也就是硬件决定的,所以不可能与十六位匹配。不知道这样回答是否满意。
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved