实验二 实验三 思考题解答.docx
《实验二 实验三 思考题解答.docx》由会员分享,可在线阅读,更多相关《实验二 实验三 思考题解答.docx(9页珍藏版)》请在冰豆网上搜索。
实验二实验三思考题解答
1.
DATASEGMENT
INPUTDB'PLEASEINPUTX(0-9):
$'
TABDW0,1,8,27,64,125,216,343,512,729
XDB?
XXXDW?
DATAENDS
CODESEGMENT'CODE'
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVDX,OFFSETINPUT
LEADX,INPUT
MOVAH,9
INT21H
MOVAH,1
INT21H
ANDAL,0FH
SUBAL,30H
MOVX,AL
ADDAL,AL
SALAL,1或SHLAL,1
MOVBL,AL
MOVBH,0
MOVAX,TAB[BX]
MOVXXX,AX
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
思考题
①根据结果分析程序并写出程序的功能。
②找出与MOVDX,OFFSETINPUT等价的指令。
③找出与ANDAL,0FH等价的指令。
④找出与ADDAL,AL等价的指令。
⑤变量TAB的类型是否可以改成DB?
①:
从键盘输入一个0-9之间的值,查表找到这个值的立方.
②:
LEADX,INPUT
③:
SUBAL,30H
④:
SALAL,1或SHLAL,1
⑤:
不能
⑥:
改为分支程序
START:
MOVAX,DATA
MOVDS,AX
INPUT:
MOVDX,OFFSETINPUT
MOVAH,9
INT21H
MOVAH,1
INT21H
CMPAL,’0’
JLINPUT
CMPAL,’9’
JGINPUT
ANDAL,0FH00111001‘9’
00001111
000010019
MOVX,AL
ADDAL,AL
MOVBL,AL
MOVBH,0
MOVAX,TAB[BX]
MOVXXX,AX
MOVAH,4CH
INT21H
2.
DATASEGMENT
VARY1DW-12
VARY2DW34
DATAENDS
CODESEGMENT'CODE'
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVBX,VARY1
MOVCX,VARY2
CMPBX,CX
JGEFINISH
MOVDX,BX
MOVBX,CX
MOVCX,DX
MOVVARY1,BX
MOVVARY2,CX
FINISH:
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
【思考题】
至少找出3种其它的方法代替程序中的带下划线指令,完成两个寄存器BX、CX值的交换。
①:
XCHGBX,CX
②:
PUSHBX
PUSHCX
POPBX
POPCX
或:
PUSHBX
MOVBX,CX
POPCX
③:
XORBX,CX
XORBX,CX
XORBX,CX
3.程序功能:
从BUF开始的11个单元中,存放着11个整数,统计其中正数并且是偶数的个数,存入R中。
【实验程序】xunhuan1.asm
DATASEGMENT
BUFDB-2,5,-3,6,100,0,-20,-9,8,-10,21
N=①11,或$-BUF
RDW?
R=3
DATAENDS
CODESEGMENT
②ASSUMECS:
CODE,DS:
DATA
BEGIN:
MOVAX,DATA
③MOVDS,AX
LEABX,BUF
MOVCX,N
④MOVAX,0
LOPA:
CMP[BX],BYTEPTR0
⑤JLENEXT
TEST[BX],BYTEPTR1
⑥JNZNEXT
INCAX
NEXT:
INCBX
DECCX
⑦JNZLOPA
MOVR,AX
MOVAH,4CH
INT21H
CODEENDS
END⑧BEGIN
4.阅读程序,回答问题。
【实验程序】xunhuan2.asm
DATASEGMENT
BUFDB'abcde'
N=$-BUF
BCDDBNDUP(?
)
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
LEASI,BUF
MOVCX,N
LEADI,BCD+N-1
LOOP1:
MOVAL,[SI]
SUBAL,20H
MOV[DI],AL
INCSI
DECDI
DECCX
JNELOOP1
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
【问题一】
说明程序功能,程序执行后,从BCD开始的N个字节单元中的内容是什么?
把小写字母转变为大写字母并按逆序存放.’EDCBA’
【问题二】
找出一条指令,代替
DECCX
JNELOOP1
,使程序功能不变。
LOOPLOOP1
【问题三】
如果将代码段中的指令
LEADI,BCD+N-1改成LEADI,BCD
DECDI改成INCDI
其它指令不变,程序执行后,从BCD开始的N个字节单元中的内容是什么?
'ABCDE'
BUF
‘a’
61H
←SI
‘b’
62H
‘c’
63H
‘d’
64H
‘e’
65H
BCD
←DI
BUF
‘a’
61H
‘b’
62H
‘c’
63H
‘d’
64H
‘e’
65H
←SI
BCD
‘E’
45H
←DI
‘D’
44H
‘C’
43H
‘B’
42H
‘A’
41H
BUF
‘a’
61H
←SI
‘b’
62H
‘c’
63H
‘d’
64H
‘e’
65H
BCD
←DI
BUF
‘a’
61H
‘b’
62H
‘c’
63H
‘d’
64H
‘e’
65H
←SI
BCD
‘A’
41H
‘B’
42H
‘C’
43H
‘D’
44H
‘E’
45H
←DI