请教各位汇编的高手,这几个题的答案是什么?
本人的汇编知识都交给老师了,这三个题是朋友问我的,我又回答不出来,只有到这里请教各位了?
一、根据下面的伪指令和指令序列,设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
问题点数:20、回复次数:16Top
1 楼mydo(侯佩|hopy|ks)回复于 2006-03-08 20:08:41 得分 0
很简单啊,实在不会用 debug 调试,自己体会。Top
2 楼fhb13(游途道标)回复于 2006-03-08 20:45:22 得分 10
一、TAB2的物理地址是10010H(AX)=ABCD
二、(AX)=13(BX)=1
三、(AL)=11H (CX)=4
楼主 我升3星靠你了Top
3 楼DelphiGuy()回复于 2006-03-08 21:13:27 得分 10
1. 10018h, ax=0400h
2. ax=2009h bx=6000h
3. al=1 cx=4
Top
4 楼jibrood(一二)回复于 2006-03-09 09:31:42 得分 0
哪一个是正确答案呀?FHB13和DelphiGuy()Top
5 楼fhb13(游途道标)回复于 2006-03-09 13:20:25 得分 0
一、TAB2的物理地址是10018H (AX)=4142H='AB'
二、(AX)=13(BX)=1
三、(AL)=1H (CX)=4
最后正确答案如上Top
6 楼fhb13(游途道标)回复于 2006-03-09 13:28:48 得分 0
一、TAB2的物理地址是10018H (AX)=4142H='AB'
二、(AX)=2009h(BX)=6000h
三、(AL)=1H (CX)=4
真正的正确答案如上
作汇编题目错误率好高,兄弟考试小心Top
7 楼DelphiGuy()回复于 2006-03-09 15:25:11 得分 0
你的答案还是有错。:)
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语言。
Top
8 楼jibrood(一二)回复于 2006-03-09 16:53:26 得分 0
高手们,能不能用DEBUG测试一下呀,错了可就惨了,拜托各位了Top
9 楼fhb13(游途道标)回复于 2006-03-09 18:49:56 得分 0
多谢楼上的楼上点明
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语言的后遗症:)Top
10 楼jibrood(一二)回复于 2006-03-09 23:18:27 得分 0
首先谢谢两位的帮忙,
对于第一题,和第三题,我也演算出来了,但是第二题我等到的答案是
(AX)=28H
(BX)=60H
能贴出演算过程嘛,谢谢了,结贴时分数一定送上Top
11 楼jibrood(一二)回复于 2006-03-09 23:36:30 得分 0
应该是
(AX)=002CH
(BX)=0018HTop
12 楼jibrood(一二)回复于 2006-03-09 23:53:46 得分 0
算错了,第二题的答案应该是
(AX)=2008H
(BX)=6000H
因为在第一次ADC后CF的值为0
所以在二次ADC的结果2008H
Top
13 楼DelphiGuy()回复于 2006-03-10 13:31:54 得分 0
不对。
bx=3 cx=2
那么ror bx,cl之后carry位就应该是1。
Top
14 楼fhb13(游途道标)回复于 2006-03-10 14:04:32 得分 0
第二题不骤如下 绝对正确!!!!
我用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=6000Top
15 楼daipeanut(满天星I'mwaitingforyourcoming with a sincere heart)回复于 2006-03-10 15:02:42 得分 0
DelphiGuy() ( ) 信誉:100 2006-3-8 21:13:27 得分: 0
1. 10018h, ax=0400h
2. ax=2009h bx=6000h
3. al=1 cx=4
正解:
Top
16 楼jibrood(一二)回复于 2006-03-10 19:54:22 得分 0
谢谢各位了,
不过第三题还有点问题的,
今天我查到这个指令,是这样解释的,
LENGTH 对于变量中使用DUP的情况,汇编程序将送回分配给该变量的单元数(以变量类型为单位),而对于其他情况,则送回1,所以(CX)=1
Top




