11284030管猛汇编分析作业.docx
《11284030管猛汇编分析作业.docx》由会员分享,可在线阅读,更多相关《11284030管猛汇编分析作业.docx(21页珍藏版)》请在冰豆网上搜索。
![11284030管猛汇编分析作业.docx](https://file1.bdocx.com/fileroot1/2022-11/16/ed97d917-7e78-4487-a648-9199f4272733/ed97d917-7e78-4487-a648-9199f42727331.gif)
11284030管猛汇编分析作业
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缓冲区的内容是什么?
程序执行完后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)该程序完成什么功能?
完成的功能是:
把以上9个数按大于等于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