汇编分析作业.docx
- 文档编号:4687291
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:21
- 大小:19.42KB
汇编分析作业.docx
《汇编分析作业.docx》由会员分享,可在线阅读,更多相关《汇编分析作业.docx(21页珍藏版)》请在冰豆网上搜索。
汇编分析作业
1.现有程序如下:
DATASEGMENT
BUFDB‘AI39*5867Jfe=KJYKGNGK339385’
C=$-BUF
N1DB0
N2DB0
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVCX,C
LEASI,BUF
L:
MOVAL,[SI]
CMPAL,30H
JBNEXT
CMPAL,39H
JANEXT
INCN1
JMPCONT
NEXT:
INCN2
CONT:
INCSI
LOOPL
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
请回答:
(1)该程序完成什么功能?
分别统计BUF中数字字符和非数字字符的个数
(2)该程序执行完后,N1和N2的内容各是多少?
N1=12,N2=15
2.现有程序如下:
DATASEGMENT
BUFDB‘ER39*5867JgeewFGHYUO9385’
C=$-BUF
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVCX,C
LEASI,BUF
L:
MOVAL,[SI]
CMPAL,61H
JBNEXT
CMPAL,7AH
JANEXT
SUBAL,20H
MOV[SI],AL
NEXT:
INCSI
LOOPL
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
请回答:
(1)该程序完成什么功能?
将BUF字符串中的小写字母转换成大写字母
(2)该程序执行完后,BUF缓冲区的内容是什么?
ER39*5867JGEEWFGHYUO9385
3.现有程序如下:
DATASEGMENT
BUFDB47H,0A4H,93H,38,-23,55H,251,0,78H
C=$-BUF
BUF1DBCDUP(0)
BUF2DBCDUP(0)
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVCX,C
LEASI,BUF
LEADI,BUF1
LEABX,BUF2
L:
MOVAL,[SI]
CMPAL,0
JGEP
MOV[BX],AL
INCBX
JMPNEXT
P:
MOV[DI],AL
INCDI
NEXT:
INCSI
LOOPL
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
请回答:
(1)该程序完成什么功能?
把BUF缓冲区的内容按大于等于0和小于0分成两组,大于等于0的放在BUF1里,小于0的放在BUF2里。
(2)该程序执行完后,BUF1和BUF2缓冲区的内容各是什么?
BUF1缓冲区内容:
47H,38,55H,0,78H
BUF2缓冲区内容:
0A4H,93H,-23,251
4.现有程序如下:
DATASEGMENT
BUF1DB100DUP(?
)
BUF2DB200DUP(0)
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVCX,100
LEASI,BUF1
LEADI,BUF2+100
L:
MOVAL,[SI]
MOV[DI],AL
INCSI
INCDI
LOOPL
MOV,AH,4CH
INT21H
CODEENDS
ENDSTART
请回答:
(1)该程序完成什么功能?
把BUF1中100个字节内容送入BUF2中的后100个字节单元中
(2)如果将指令“LEADI,BUF2+100”改为“LEADI,BUF2”之后,程序执行完后的结果如何?
把BUF1中的100个字节内容送入BUF2中的前100个字节单元中
5.现有程序如下:
DATASEGMENT
BUF1DB100DUP(?
)
BUF2DB100DUP(0)
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVCX,100
LEASI,BUF1
LEADI,BUF2
L:
MOVAL,[SI]
CMPAL,100
JBNEXT
MOV[DI],AL
INCDI
NEXT:
INCSI
LOOPL
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
请回答:
(1)该程序完成什么功能?
把BUF1中大于等于100的数放到BUF2中
(2)如果将指令“JBNEXT”改为“JAENEXT”,则程序执行结果如何?
把BUF1中小于100的数放到BUF2中
6.现有程序如下:
DATASEGMENT
BUF1DB100DUP(?
)
SUMDW0
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVCX,100
LEASI,BUF1
MOVAX,0
L:
ADDAL,[SI]
ADCAH,0
INCSI
LOOPL
MOVSUM,AX
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
请回答:
(1)该程序完成什么功能?
求BUF1中所有数之和
(2)如果去掉指令“ADCAH,0”,则程序执行结果将如何?
出现溢出,高位字节丢失
7.现有程序如下:
DATASEGMENT
BUF1DB32H,64H,72H,38H,68H,9AH,89H,0
SUMDW0
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
LEASI,BUF1
MOVAX,0
L:
CMP[SI],BYTEPTR0
JZNDO
ADDAL,[SI]
ADCAH,0
INCSI
JMPL
NDO:
MOVSUM,AX
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
请回答:
(1)该程序完成什么功能?
求所有数的和sum
(2)程序执行完后,共执行了多少次相加的操作?
总共完成了7次相加
8.现有程序如下:
STACKSEGMENTSTACK‘STACK’
DW100DUP(0)
STACKENDS
DATASEGMENT
BUFDB100DUP(0)
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK
START:
MOVAX,DATA
MOVDS,AX
MOVAX,STACK
MOVSS,AX
LEADI,BUF
L:
MOVAH,1
INT21H
CMPAL,0DH
JZEXIT
CALLSTO
JMPL
EXIT:
MOVBYTEPTR[DI],‘$’
LEADX,BUF
MOVAH,9
INT21H
MOVAH,4CH
INT21H
STOPROC
CMPAL,30H
JBNEXT
CMPAL,39H
JANEXT
MOV[DI],AL
INCDI
NEXT:
RET
STOENDP
CODEENDS
ENDSTART
请回答:
(1)STO子程序完成的功能是什么?
把寄存器中的数字字符放到BUF中
(2)该程序完成的功能是什么?
键盘输入字符,把其中的数字字符放入buf中,并显示字符
9.阅读以下程序后回答问题。
DD2
DB0,l,2,3,4,5,6,7,8,9
…
LEASI,DD2
LEADI,DD2+1
MOVCX,5
LOP:
MOVAL,[SI]
XCHGAL,[DI]
MOV[SI],AL
ADDSI,2
ADDDI,2
DECCX
JNZLOP
回答:
(1)该程序段完成什么功能?
相邻的两个字节数据交换
(2)程序运行后,DD2开始的l0个字节数应是什么值?
1、0、3、2、5、4、7、6、9、8
10.现有程序如下:
STACKSEGMENTSTACK'STACK'
DW20hDUP(0)
STACKENDS
DATASEGMENT
BUFDw1
CDB2
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK
START:
MOVAX,DATA
MOVDS,AX
MOVAX,STACK
MOVSS,AX
MOVBL,C
MOVSI,BUF
L1:
PUSHSI
CALLSUBP1
CALLSUBP2
POPSI
INCSI
DECBL
JNZL1
MOVAH,4CH
INT21H
SUBP1PROC
PUSHAX
PUSHDX
L2:
MOVDL,41H
MOVAH,2
INT21H
DECSI
JNZL2
POPDX
POPAX
RET
SUBP1ENDP
SUBP2PROC
PUSHAX
PUSHDX
MOVCX,8
L3:
MOVDL,'*'
MOVAH,2
INT21H
LOOPL3
MOVDL,0DH
MOVAH,2
INT21H
MOVDL,0AH
MOVAH,2
INT21H
POPDX
POPAX
RET
SUBP2ENDP
CODEENDS
ENDSTART
请回答:
(1)SUBP1子程序完成的功能是什么?
(2)SUBP2子程序完成的功能是什么?
输出8个’*’,并以回车换行
(3)该程序完成的功能是什么?
11.现有程序如下:
DATASEGMENT
XDB0ABH
FLAGDB0
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVAL,X
CMPAL,0
JGEL
MOVFLAG,0
JMPEXIT
L:
MOVFLAG,1
EXIT:
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
请回答:
(1)该程序完成什么功能?
判断X,当X>=0时将flag置1,否则清0
(2)程序执行完后FLAG中的内容是多少?
Flag内容为0,因为X=0AB为负数
12.现有程序如下:
DATASEGMENT
BUFDB0
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVAH,1
INT21H
CMPAL,61H
JBN
CMPAL,7AH
JAN
SUBAL,20H
N:
MOVBUF,AL
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
请回答:
(1)该程序完成什么功能?
键盘输入字符,将其中的小写字母转换为大写字母放在buf中,其他字符不变
(2)如果要将“CMPAL,7AH”改为“CMPAL,7BH”,则相应的指令
“JAN”应改为什么指令?
应该改为:
JAEN
13.现有程序如下:
DATASEGMENT
ADB23
BDB0F0H
CDB0
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVAL,A
CMPAL,B
JZL
JGM
MOVC,-1
JMPEXIT
L:
MOVC,0
JMPEXIT
M:
MOVC,1
EXIT:
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
请回答:
(1)该程序完成什么功能?
比较A、B两个数,当A>B时,把C置为1;当A
(2)程序运行后,C中的内容是什么?
C的内容为1,因为23为正数,0F0H为负数。
14.现有程序如下:
DATASEGMENT
XDW7000H
YDW9000H
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVAX,X
SUBAX,Y
JOL
MOVDL,‘N’
JMPEXIT
L:
MOVDL,‘Y’
EXIT:
MOVAH,2
INT21H
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
请回答:
(1)请程序完成什么功能?
判断X-Y是否有溢出,若有溢出,则显示输出Y,无溢出则显示输出N
(2)程序执行完后,显示输出的结果如何?
显示输出为Y
15.阅读以下程序,该程序段完成什么功能?
ANDCX,0101H
ANDDX,0101H
TESTCL,DL
JEABC
TESTCH,DH
JEABC
STI
JMPEXIT
ABC:
CLI
EXIT:
RET
比较DX和CX的各个位是否相同,若相同,则标志位IF置为1;否则置为0
16.现有程序如下:
DATASEGMENT
BUFDB23,125,96
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
LEASI,BUF
MOVAL,[SI]
MOVBL,[SI+1]
MOVCL,[SI+2]
CMPAL,BL
JAEN1
XCHGAL,BL
N1:
CMPAL,CL
JAEN2
XCHGAL,CL
N2:
CMPBL,CL
JAEN3
XCHGBL,CL
N3:
MOV[SI],AL
MOV[SI+1],BL
MOV[SI+2],CL
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
请回答:
(1)该程序完成什么功能?
把buf中的3个数由大到小排序
(2)程序运行后BUF中的内容依次是什么?
125、96、23
17.现有程序如下:
DATASEGMENT
XDB4FH
BUFDB2DUP(0)
DATAENDS
CODESEGMENT
ASSUMEDS:
DATA,CS:
CODE
START:
MOVAX,DATA
MOVDS,AX
MOVAL,X
MOVCL,4
SHRAL,CL
CMPAL,9
JBEL
ADDAL,7
L:
ADDAL,30H
MOVBUF,AL
MOVAL,X
ANDAL,0FH
CMPAL,10
JBM
ADDAL,7
M:
ADDAL,30H
MOVBUF+1,AL
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
请回答:
(1)该程序完成什么功能?
将X中的两位16进制数转换为ascii码放在buf中
(2)程序运行后BUF中的内容依次是什么?
内容为:
34H、46H
18.现有程序如下:
DATASEGMENT
ADW1234H
BDW5678H
SDB‘NOSWAP!
$’
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVAH,1
INT21H
CMPAL,‘Y’
JNZM
CMPAL,‘y’
JNZM
MOVAX,A
XCHGAX,B
MOVA,AX
JMPN
M:
MOVAH,9
LEADX,S
INT21H
N:
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
请回答:
(1)该程序完成什么功能?
键盘输入Y或者y时,交换A、B的内容;否则输出NOSWAP!
(2)若鍵盘输入“Y”时,A,B中的值各为多少?
A:
5678HB:
1234H
19.现有程序如下:
DATASEGMENT
XDB23h
YDB45h
ZDB0
DATAENDS
CODESEGMENT
ASSUMEDS:
DATA,CS:
CODE
START:
MOVAX,DATA
MOVDS,AX
MOVAL,X
CMPAL,0
JGEL
ADDAL,Y
MOVAH,0
ADCAH,0
MOVwordptrZ,AX
JMPEXIT
L:
SUBAL,Y
MOVAH,0
SBBAH,0
MOVwordptrZ,AX
EXIT:
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
请回答:
(1)该程序计算的表达式是什么?
Z=X-Y(X>Y);Z=X+Y(X (2)程序运行后,Z中的内容是什么? Z的内容是: -22H 20.现有程序如下: DATASEGMENT BUFDB0F3H SDB0 DATAENDS CODESEGMENT ASSUMECS: CODE,DS: DATA START: MOVAX,DATA MOVDS,AX MOVAL,BUF TESTAL,80H JZL NEGAL L: MOVS,AL MOVAH,4CH INT21H CODEENDS ENDSTART 请回答: (1)该程序完成什么功能? 将buf中的绝对值送给S (2)程序运行后S中的内容是什么? S的内容为0DH 21.阅读以下程序,该程序段完成什么功能? BUFFERDB20DUP(? ) …… XORBX,BX MOVCX,5 ONE: MOVBUFFER[BX],0 MOVBUFFER[BX+1],1 MOVBUFFER[BX+2],2 MOVBUFFER[BX+3],3 ADDBX,4 LOOPONE 循环存放0、1、2、3、4到BUFFER里
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编 分析 作业