请教各位汇编的高手,这几个题的答案是什么?

jibrood 2006-03-08 07:49:08
本人的汇编知识都交给老师了,这三个题是朋友问我的,我又回答不出来,只有到这里请教各位了?
一、根据下面的伪指令和指令序列,设TAB1的段地址是1000H,偏移地址是0010H,则TAB2的物理地址是?(AX)=?
TAB1 DW1,2,3,4
CONT EQU 5
TAB2 DB‘ABCDEF’
MOV BX,OFFSET TAB1
ADD BX,CONT
MOV AX,WORD PTR[BX]

二、设(AX)=8,(BX)=3,(CX)=2,下列程序执行后,(AX)=?(BX)=?
LOP: ROR BX,CL
ADC AX,BX
LOOP LOP

三、执行下面的伪指令和指令序列后,(AL)=?(CX)=?
TAB DB‘5678’
LEA SI,TAB
MOV CX,LENGTH TAB
MOV AL,[SI]
SUB AL,30H
INC SI
MOV BL,[SI]
SIB BL,30H
ADD AL,BL
AAA
...全文
208 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
jibrood 2006-03-10
  • 打赏
  • 举报
回复
谢谢各位了,
不过第三题还有点问题的,
今天我查到这个指令,是这样解释的,
LENGTH 对于变量中使用DUP的情况,汇编程序将送回分配给该变量的单元数(以变量类型为单位),而对于其他情况,则送回1,所以(CX)=1
daipeanut 2006-03-10
  • 打赏
  • 举报
回复
DelphiGuy() ( ) 信誉:100 2006-3-8 21:13:27 得分: 0



1. 10018h, ax=0400h
2. ax=2009h bx=6000h
3. al=1 cx=4

正解:


fhb13 2006-03-10
  • 打赏
  • 举报
回复
第二题不骤如下 绝对正确!!!!
我用Debug调试的


AX=0008 BX=0003 CX=0002 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=13C4 ES=13C4 SS=13C4 CS=13C4 IP=0109 NV UP EI PL NZ NA PO NC
13C4:0109 D3CB ROR BX,CL

AX=0008 BX=C000 CX=0002 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=13C4 ES=13C4 SS=13C4 CS=13C4 IP=010B NV UP EI PL NZ NA PO CY
13C4:010B 11D8 ADC AX,BX

AX=C009 BX=C000 CX=0002 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=13C4 ES=13C4 SS=13C4 CS=13C4 IP=010D NV UP EI NG NZ NA PE NC
13C4:010D E2FA LOOP 0109

AX=C009 BX=C000 CX=0001 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=13C4 ES=13C4 SS=13C4 CS=13C4 IP=0109 NV UP EI NG NZ NA PE NC
13C4:0109 D3CB ROR BX,CL

AX=C009 BX=6000 CX=0001 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=13C4 ES=13C4 SS=13C4 CS=13C4 IP=010B OV UP EI NG NZ NA PE NC
13C4:010B 11D8 ADC AX,BX

AX=2009 BX=6000 CX=0001 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=13C4 ES=13C4 SS=13C4 CS=13C4 IP=010D NV UP EI PL NZ NA PE CY
13C4:010D E2FA LOOP 0109

AX=2009 BX=6000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=13C4 ES=13C4 SS=13C4 CS=13C4 IP=010F NV UP EI PL NZ NA PE CY
13C4:010F 0000 ADD [BX+SI],AL

最后
AX=2009 BX=6000
  • 打赏
  • 举报
回复
不对。
bx=3 cx=2
那么ror bx,cl之后carry位就应该是1。
jibrood 2006-03-09
  • 打赏
  • 举报
回复
算错了,第二题的答案应该是
(AX)=2008H
(BX)=6000H
因为在第一次ADC后CF的值为0
所以在二次ADC的结果2008H


jibrood 2006-03-09
  • 打赏
  • 举报
回复
应该是
(AX)=002CH
(BX)=0018H
jibrood 2006-03-09
  • 打赏
  • 举报
回复
首先谢谢两位的帮忙,
对于第一题,和第三题,我也演算出来了,但是第二题我等到的答案是
(AX)=28H
(BX)=60H
能贴出演算过程嘛,谢谢了,结贴时分数一定送上
jibrood 2006-03-09
  • 打赏
  • 举报
回复
哪一个是正确答案呀?FHB13和DelphiGuy()
fhb13 2006-03-09
  • 打赏
  • 举报
回复
多谢楼上的楼上点明
TAB1 DW1,2,3,4
CONT EQU 5
TAB2 DB‘ABCDEF’
在内存中的分布应该如下这样
01H 00H 02H 00H 03H 00H 04H 00H 41H 42H 43H 44H 45H 46H

MOV BX,OFFSET TAB1 ;BX的地址指向0001H
ADD BX,CONT ;BX+5指向0400H也就是00H 04H
MOV AX,WORD PTR[BX]

AX因该是0400H
楼主真不好意识,搞C语言的后遗症:)
jibrood 2006-03-09
  • 打赏
  • 举报
回复
高手们,能不能用DEBUG测试一下呀,错了可就惨了,拜托各位了
  • 打赏
  • 举报
回复
你的答案还是有错。:)
TAB1:
1000:0010 01 00 02 00 03 [00 04] 00
所以
MOV BX,OFFSET TAB1
ADD BX,CONT
MOV AX,WORD PTR[BX]
之后ax肯定是0400,因为x86中的指令偏移都是以字节为单位的,这不是C语言。
fhb13 2006-03-09
  • 打赏
  • 举报
回复
一、TAB2的物理地址是10018H (AX)=4142H='AB'

二、(AX)=2009h(BX)=6000h

三、(AL)=1H (CX)=4

真正的正确答案如上
作汇编题目错误率好高,兄弟考试小心
fhb13 2006-03-09
  • 打赏
  • 举报
回复
一、TAB2的物理地址是10018H (AX)=4142H='AB'

二、(AX)=13(BX)=1

三、(AL)=1H (CX)=4

最后正确答案如上
  • 打赏
  • 举报
回复
1. 10018h, ax=0400h
2. ax=2009h bx=6000h
3. al=1 cx=4
fhb13 2006-03-08
  • 打赏
  • 举报
回复
一、TAB2的物理地址是10010H(AX)=ABCD

二、(AX)=13(BX)=1

三、(AL)=11H (CX)=4

楼主 我升3星靠你了
大熊猫侯佩 2006-03-08
  • 打赏
  • 举报
回复
很简单啊,实在不会用 debug 调试,自己体会。

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧