鱼C论坛

 找回密码
 立即注册
查看: 3765|回复: 11

汇编语言(第2版)第2张寄存器文章的问题?

 关闭 [复制链接]
发表于 2011-8-9 16:54:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 541762705 于 2011-8-12 22:01 编辑

汇编语言(第2版)第2张寄存器文章的问题
     表2.3  程序段中指令的执行情况之二

程序段中的指令指令执行后AX中的数据指令执行后BX中的数据
mov ax,001AH001AH0000H
mov bx,0026H001AH0026H
add al,bl0040H0026H
add ah,bl2640H0026H
add bh,al2640H4026H
move ah,00040H4026H
add al,85H00c5H4026H
add al,93H         ?4026H
这道例题前两条我看懂了,是指把001AH移动到ax中,ax=001AH        
第二条是指把0026H移动到bx里,bx=0026H  我也不知道是不是我这么理解的,我认为理解的对,
但是从第三条往下我就不明白了,al和bl还有ah、bh=多少?又怎么算的?
希望大家帮帮忙,我是个菜鸟加新手,请大家帮帮我解答下!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-8-9 17:01:30 | 显示全部楼层
你看看小甲鱼的视频教程吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-8-9 17:09:54 | 显示全部楼层
我看过了,但是小甲鱼老师对这个例题却是一下带过并没有讲。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-8-9 17:10:41 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-8-9 17:29:36 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-8-9 17:38:03 | 显示全部楼层
parbbo 发表于 2011-8-9 17:29
http://bbs.fishc.com/thread-2264-1-1.html

貌似这个链接也许是我看不懂,或者是跟我问的那道题没什么关联啊。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-8-9 17:52:31 | 显示全部楼层
为了兼容低版本寄存器,8086的16为通用寄存器被分为高8位ah和低8位al,add al,bl就是把ax的低8位与bx的低8位值相加,哪就是1AH+26H结果就是40H
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-8-9 19:20:47 | 显示全部楼层
为了兼容到第一代的CPU  16位的4个通用寄存器可以拆   AX可以ah和al      BX可以bh和bl      CX可以ch和cl    很容易区分的   就是你看见的只要是h说明是高八位       l的是低八位     比如我随便写个指令
mov ax,1201
mov ah,ax
第一条指令很简单吧就是把AX复值为1201     但是这个1201  可是分成 高八位12    和低八位01
所以执行第二条指令时    CPU会自动把高八位12放进ah中   
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-8-9 19:40:48 | 显示全部楼层
parbbo 发表于 2011-8-9 17:52
为了兼容低版本寄存器,8086的16为通用寄存器被分为高8位ah和低8位al,add al,bl就是把ax的低8位与bx的低8位 ...

非常感谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-8-9 19:41:22 | 显示全部楼层
嗜血丨灵异狂 发表于 2011-8-9 19:20
为了兼容到第一代的CPU  16位的4个通用寄存器可以拆   AX可以ah和al      BX可以bh和bl      CX可以ch和cl  ...

非常感谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-8-11 23:56:28 | 显示全部楼层
ax可分为ah和al
bx可分为bh和bl
cx可分为ch和cl
dx可分为dh和dl
ah,bh,ch,dh则为高位
al,bl,cl,dl则为低位
就拿add al,bl来说吧!前面说到ax=001ah,bx=0026h.ax的高位是00h,低位是1ah.bx的高位是00h,低位是26h.add是相加的意思,ax=ax+bx,al=al+bl.哪么,al=1ah+26h=40h.结果再加上ax的高位00h不就是0040h吗?你也可以输入程序段中的指令,用debug一步一步T,就知结果了···
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-8-12 11:51:29 | 显示全部楼层
原来菜菜鸟还比较多,既然有人回答了我就飘过…………
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-19 04:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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