首页
社区
课程
招聘
[旧帖] 一个汇编的小问题,。超级郁闷的 0.00雪花
发表于: 2010-1-11 01:06 6489

[旧帖] 一个汇编的小问题,。超级郁闷的 0.00雪花

2010-1-11 01:06
6489
程序段中的指令          执行指令后AX的数据   执行指令后BX中的数据
mov ax,001AH              001AH                             0000H
mov bx,0026H             001AH                             0026H
add al,bl                      0040H                             0026H
add ah,bl                    2640H                              0026H
add bh,al                    2640H                             4026H
mov ah,0                     0040H                            4026H
add al,85H                  00C5H                             4026H

我就想知道为什么 add ah,bl   之后  ax=2640H  
                  add bh ,al 之后   bx=4026H

按照我的理解  ax应该=0026H     bx应该=0040H才对

这个是王爽的 汇编教程 第二版的内容

真闷,,

有人能给解答下嘛  呜呜

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (25)
雪    币: 19
活跃值: (1086)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
AL是AX最低位
BL也是BX最低位
1AH+26H等于多少  LZ还是拿计算器算算吧
2010-1-11 01:24
0
雪    币: 50
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
add ah,bl   之后  ax=2640H  
                  add bh ,al 之后   bx=4026H

这时bl=26h           ah=0
所以ah=ah+bl
也就是ah=26h ;ax的高位是26,低位是40,合起来就是2640H了。不知道这样解释对不对?
2010-1-11 01:28
0
雪    币: 20
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
回下楼上的朋友
add ah,bl                    2640H                              0026H
add bh,al                    2640H                             4026H

上面的是我直接从书本上打上去的,,是书本的内容。。。
在add ah,bl  之前,,ax 的值还是0040H   bx的值是0026H啊- -!~
2010-1-11 01:29
0
雪    币: 92
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
ax的16位是直接用ah和al拼接出来的,比如(ah)=23H,(al)=45H,那么(ax)=2345H

add ah,bl  之前:
(ax)=0040H  也就是说    (ah)=00H    (al)=40H
(bx)=0026H   也就是说   (bh)=00H    (bl)=26H

add ah,bl 后:
(ah)和(bl)相加的结果保存载ah中,也就是说00H(ah)+26H(bl) -> 26H(ah)
(al)没变,还是40H
(ax)=(ah al) = 2640H

下面的和这个一样,理解了么?
2010-1-11 08:12
0
雪    币: 90
活跃值: (91)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
是要注意到地位吗
2010-1-11 08:22
0
雪    币: 295
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
楼主是不是理解错了寄存器或者add指令?
2010-1-11 09:08
0
雪    币: 109
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
8
楼上的几位说清楚了。
ax分为ah al ,二个都是8位。ax是16位。
修改ah的话其实就是修改ax的高8位,al同理。。所以。。。。
2010-1-11 09:38
0
雪    币: 12
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
AX  的前8位是AH    后8位是AL
同理BX
这样ADD   AH   BL就是把BX后两位加到AX前两位
同理下面的
2010-1-11 09:50
0
雪    币: 18
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
挣分
ADD 参数1,参数2
参数1,参数2位数要相同。如:AH,AL。

值放到参数1里面,进位不反应在参数1里面。
2010-1-11 15:59
0
雪    币: 17
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
不凑热闹了,^_^,就是注意高低位吧
2010-1-11 16:13
0
雪    币: 85
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
mov    ax,001a
AX=001A  BX=4026  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=138F  ES=138F  SS=138F  CS=138F  IP=0103   NV UP EI NG NZ NA PE NC
138F:0103 BB2600        MOV     BX,0026
-t

AX=001A  BX=0026  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=138F  ES=138F  SS=138F  CS=138F  IP=0106   NV UP EI NG NZ NA PE NC
138F:0106 00D8          ADD     AL,BL
-t
AX=0040  BX=0026  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=138F  ES=138F  SS=138F  CS=138F  IP=0108   NV UP EI PL NZ AC PO NC
138F:0108 00DC          ADD     AH,BL
-t

AX=2640  BX=0026  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=138F  ES=138F  SS=138F  CS=138F  IP=010A   NV UP EI PL NZ NA PO NC
138F:010A 00C7          ADD     BH,AL
-t

AX=2640  BX=4026  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=138F  ES=138F  SS=138F  CS=138F  IP=010C   NV UP EI PL NZ NA PO NC
138F:010C B400          MOV     AH,00
-t

AX=0040  BX=4026  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=138F  ES=138F  SS=138F  CS=138F  IP=010E   NV UP EI PL NZ NA PO NC
138F:010E 0485          ADD     AL,85
-t

AX=00C5  BX=4026  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=138F  ES=138F  SS=138F  CS=138F  IP=0110   NV UP EI NG NZ NA PE NC

我想现在应该很清楚了吧,结果是没有错的,楼主可以根据这些自己去体会吧!
2010-1-11 16:51
0
雪    币: 20
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
寄存器高低位,注意数据存储的高低地址顺序
2010-1-11 21:07
0
雪    币: 232
活跃值: (105)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
14
- -
这本来就是对的好不好0 0
2010-1-11 21:26
0
雪    币: 30
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
注意高低位就可以了啊,其实原理很简单的啊
2010-1-13 20:19
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
add ah,bl,ah是ax的高八位,同理bl为bx低八位,所以相加,就是ah和al组合出来的数吧
2010-1-15 12:06
0
雪    币: 13
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
高地位的问题。。我承认我还是比楼主强一点。。。
2010-1-17 13:55
0
雪    币: 135
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
看到这么多人这么热心真是好啊
2010-1-18 16:57
0
雪    币: 135
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
对了,按照论坛规则,楼主在解决问题之后应该出来道个谢嘛,也不枉大家一片好心
2010-1-18 16:59
0
雪    币: 42
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
学习了很多东西
2010-1-19 01:18
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
我也想知道一起学习

代孕网
2010-1-19 08:44
0
雪    币: 231
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
在仔细看看书 很好理解的 别求速度 只到看懂为止
2010-1-19 14:00
0
雪    币: 56
活跃值: (276)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
注意高低位就可以了,楼主稍微再仔细想一下就明白了。
2010-1-20 20:51
0
雪    币: 47
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
搞清是给ah加,还是给al给,就明白了,也就是操作后结果回送给那个寄存器
2010-1-20 23:38
0
雪    币: 34
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
ax(16bit)由ah(高8bit),和al(低8bit构成)
add al,bl是说al+bl的结果在放到al中,bl的值是不变的
2010-1-21 18:16
0
游客
登录 | 注册 方可回帖
返回
//