. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->基础知识
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  add ah bl 是否是个错误  [待解决] 回复[ 15次 ]   点击[ 609次 ]  
cengjingdeni
[帖 主]   [ 发表时间:2009-05-04 00:14 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-05-03 23:33
ax=0040H bx=0026H
add ah bl=?
“在进行数据传送或运算时,要注意指令的两个操作对象的位数应当是一致的”低8位可以跟高8位相加传送吗?
详见第二章表2.1
如果可以相加的话ah=00H bl=26H 所以add ah bl=>ah=ah+bl=26h不对吗?希望有高手详解 谢谢
cengjingdeni
[第1楼]   [ 回复时间:2009-05-04 00:22 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-05-03 23:33
已经想通了
acool
[第2楼]   [ 回复时间:2009-05-04 16:26 ]   [引用]   [回复]   [ top ] 
荣誉值:49
信誉值:0
注册日期:2008-10-15 16:15
add ah bl 是否是个错误 
---------------
如果检验他们是否可以,书上提到的一个方法就可以用--debug下写入试试。

首先是语法要正确,add ah,bl,不要少了逗号。
t181935471
[第3楼]   [ 回复时间:2009-05-06 22:58 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-04-09 19:14
add ah,bl
ah--->16位寄存器
bl--->8位寄存器
位数不一致,怎么相加呢?
xiaomeng008
[第4楼]   [ 回复时间:2009-05-07 15:19 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:2
注册日期:2009-04-07 09:03
想通了也再解释一下啊
应该都是8位的吧?
flyincold
[第5楼]   [ 回复时间:2009-05-14 09:14 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-05-13 21:46
试验已经证明了,我用DEBUG测试了一下,结果如我所料

-r  ax=0000 bx=0000
    mov ax,1234
-t  ax=1234 bx=0000
    mov bx,2345
-t  ax=1234 bx=2345
    add ah,bl
-t  ax=5734 bx=2345

结果显而易见,在ah与bl相加的时候,计算机只把它们做为两个8位寄存器相加,没有高低之分。于是12+45=57
然后计算机把结果存在了ah寄存器里,ax='ah''al'  ax=5734

所以结论是,无论是高位或低位的寄存器相互运算,计算机只把它们当作两个8位来操作,没有高低之分,等到相应结果存入寄存器后才会体现高低位的效果
taxli
[第6楼]   [ 回复时间:2009-05-26 10:13 ]   [引用]   [回复]   [ top ] 
荣誉值:11
信誉值:1
注册日期:2009-05-12 12:06
楼上是正解。。。
foopo
[第7楼]   [ 回复时间:2009-06-24 20:37 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:0
注册日期:2009-06-24 00:05
试过就知道了
xiaotie
[第8楼]   [ 回复时间:2009-06-25 12:18 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2007-11-16 15:22
hao
hitop0609
[第9楼]   [ 回复时间:2009-07-04 22:47 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-06-27 23:55
试验已经证明了,我用DEBUG测试了一下,结果如我所料

-r  ax=0000 bx=0000
    mov ax,1234
-t  ax=1234 bx=0000
    mov bx,2345
-t  ax=1234 bx=2345
    add ah,bl
-t  ax=5734 bx=2345

结果显而易见,在ah与bl相加的时候,计算机只把它们做为两个8位寄存器相加,没有高低之分。于是12+45=57
然后计算机把结果存在了ah寄存器里,ax='ah''al'  ax=5734

所以结论是,无论是高位或低位的寄存器相互运算,计算机只把它们当作两个8位来操作,没有高低之分,等到相应结果存入寄存器后才会体现高低位的效果
------------------
回复:
billli
[第10楼]   [ 回复时间:2009-07-07 10:15 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-06-22 20:35
没错误,ah,bl表示8位寄存器,可用debug验证
china20090
[第11楼]   [ 回复时间:2009-07-16 20:52 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-07-16 20:16
8个比特
ying176
[第12楼]   [ 回复时间:2009-07-18 11:11 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-07-18 10:28
学习了
novelfans
[第13楼]   [ 回复时间:2010-11-19 16:12 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-11-19 16:10
学习啦
jtrakn
[第14楼]   [ 回复时间:2010-11-25 21:32 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:4
注册日期:2010-11-25 19:35
努力发现此类问题。
caoyonglu
[第15楼]   [ 回复时间:2010-11-26 16:05 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-11-14 22:01
这么简单的问题还要发现,我真是服了各位了!!!!
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved