北京理工大学汇编上机试题及答案.docx
- 文档编号:11740104
- 上传时间:2023-03-31
- 格式:DOCX
- 页数:114
- 大小:30.05KB
北京理工大学汇编上机试题及答案.docx
《北京理工大学汇编上机试题及答案.docx》由会员分享,可在线阅读,更多相关《北京理工大学汇编上机试题及答案.docx(114页珍藏版)》请在冰豆网上搜索。
北京理工大学汇编上机试题及答案
北京理工大学汇编上机试题和代码
信息工程051115511120151290李宏赞
1.请任意输入一个字符串,将该串倒序后在屏幕上显示。
DATASSEGMENT
BUF1DB0FFH
DB?
DB0FFHDUP(?
)
BUF2DB0DH,0AH,0FDHDUP(?
)
DATASENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS
START:
MOVAX,DATAS
MOVDS,AX
LEADX,BUF1
MOVAH,0AH
INT21H
MOVAX,0
MOVAL,BUF1[1]
LEASI,BUF1[1]
ADDSI,AX
LEADI,BUF2[2]
MOVCX,0
MOVCL,BUF1[1]
L:
MOVAL,[SI]
MOV[DI],AL
DECSI
INCDI
LOOPL
MOVBYTEPTR[DI],'$'
LEADX,BUF2
MOVAH,09H
INT21H
MOVAH,4CH
INT21H
CODESENDS
ENDSTART
2.请任意输入一个字符串,统计其中空格和A的个数,并将结果显示在屏幕上。
DATASEGMENT
BUFDB0FFH
DB?
DB0FFHDUP(?
)
OUTPUTDB0DH,0AH,'A=000'
DB0DH,0AH,'SPACE=000','$'
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
LEADX,BUF
MOVAH,0AH
INT21H
LEASI,BUF[2]
MOVCX,0
MOVCL,BUF[1]
L:
CMPBYTEPTR[SI],'A'
JNENOTA
CMPOUTPUT[10],'9'
JECAR1
INCOUTPUT[10]
JMPNEXT
CAR1:
CMPOUTPUT[9],'9'
JECAR2
MOVOUTPUT[10],'0'
INCOUTPUT[9]
JMPNEXT
CAR2:
MOVOUTPUT[10],'0'
MOVOUTPUT[9],'0'
INCOUTPUT[8]
JMPNEXT
NOTA:
CMPBYTEPTR[SI],''
JNENEXT
CMPOUTPUT[21],'9'
JECSR1
INCOUTPUT[21]
JMPNEXT
CSR1:
CMPOUTPUT[20],'9'
JECSR2
MOVOUTPUT[21],'0'
INCOUTPUT[20]
JMPNEXT
CSR2:
MOVOUTPUT[21],'0'
MOVOUTPUT[20],'0'
INCOUTPUT[19]
JMPNEXT
NEXT:
INCSI
LOOPL
LEADX,OUTPUT
MOVAH,09H
INT21H
MOVAX,4C00H
INT21H
CODEENDS
END
3.请任意输入一个字符串,将其中的空格全部删除,并将结果显示在屏幕上。
DATASEGMENT
BUF1DB0FFH
DB?
DB0FFHDUP('?
')
BUF2DB0DH,0AH,0FDHDUP('?
')
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
LEADX,BUF1
MOVAH,0AH
INT21H
MOVCX,0
MOVCL,BUF1[1]
LEASI,BUF1[2]
LEADI,BUF2[2]
L:
CMPBYTEPTR[SI],''
JEM
MOVAL,[SI]
MOV[DI],AL
INCDI
M:
INCSI
LOOPL
MOVBYTEPTR[DI],'$'
LEADX,BUF2
MOVAH,09H
INT21H
MOVAX,4C00H
INT21H
CODEENDS
END
4.请任意输入一个字符串,将其中A换成CC,并将结果显示在屏幕上。
DATASEGMENT
BUF1DB0FFH
DB?
DB0FFHDUP('?
')
BUF2DB0DH,0AH,0FDHDUP('?
')
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
LEADX,BUF1
MOVAH,0AH
INT21H
MOVCX,0
MOVCL,BUF1[1]
LEASI,BUF1[2]
LEADI,BUF2[2]
L:
CMPBYTEPTR[SI],'A'
JNEM
MOVWORDPTR[DI],'CC'
ADDDI,2
INCSI
JMPN
M:
MOVAL,[SI]
MOV[DI],AL
INCDI
INCSI
N:
LOOPL
MOVBYTEPTR[DI],'$'
LEADX,BUF2
MOVAH,09H
INT21H
MOVAX,4C00H
INT21H
CODEENDS
END
5.请任意输入一个字符串,将其中大写字母换成小写字母,并将结果显示在屏幕上。
DATASEGMENT
BUF1DB0FFH
DB?
DB0FFHDUP('?
')
BUF2DB0DH,0AH,0FDHDUP('?
')
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
LEADX,BUF1
MOVAH,0AH
INT21H
MOVCX,0
MOVCL,BUF1[1]
LEASI,BUF1[2]
LEADI,BUF2[2]
L:
MOVAL,[SI]
MOV[DI],AL
CMPBYTEPTR[DI],'a'
JNBM
ORBYTEPTR[DI],00100000B
M:
INCDI
INCSI
N:
LOOPL
MOVBYTEPTR[DI],'$'
LEADX,BUF2
MOVAH,09H
INT21H
MOVAX,4C00H
INT21H
CODEENDS
END
6.请任意输入一个字符串,将其中的英文字母全部删除,并将结果显示在屏幕上。
DATASEGMENT
BUF1DB0FFH
DB?
DB0FFHDUP('?
')
BUF2DB0DH,0AH,0FDHDUP('?
')
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
LEADX,BUF1
MOVAH,0AH
INT21H
MOVCX,0
MOVCL,BUF1[1]
LEASI,BUF1[2]
LEADI,BUF2[2]
L:
CMPBYTEPTR[SI],'A'
JNBM
MOVAL,[SI]
MOV[DI],AL
INCSI
INCDI
JMPNEXT
M:
CMPBYTEPTR[SI],'z'
JNAN
MOVAL,[SI]
MOV[DI],AL
INCSI
INCDI
JMPNEXT
N:
CMPBYTEPTR[SI],'a'
JBH
INCSI
JMPNEXT
H:
CMPBYTEPTR[SI],'Z'
JAO
INCSI
JMPNEXT
O:
MOVAL,[SI]
MOV[DI],AL
INCSI
INCDI
JMPNEXT
NEXT:
LOOPL
MOVBYTEPTR[DI],'$'
LEADX,BUF2
MOVAH,09H
INT21H
MOVAX,4C00H
INT21H
CODEENDS
END
7.现有一组字符串为data,name,time,file,code,path,user,exit,quit,text,请编写程序从键盘输入4个字符的字符串,若存在将其修改为disk,并在显示器上显示。
DATASSEGMENT
BUFDB05H
DB?
DB05HDUP('?
')
LIBDB0DH,0AH,'data'
DB0DH,0AH,'name'
DB0DH,0AH,'time'
DB0DH,0AH,'file'
DB0DH,0AH,'code'
DB0DH,0AH,'path'
DB0DH,0AH,'user'
DB0DH,0AH,'exit'
DB0DH,0AH,'quit'
DB0DH,0AH,'text','$'
REPLACEDB'disk'
DATASENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS,ES:
DATAS
START:
MOVAX,DATAS
MOVDS,AX
MOVES,AX
LEADX,BUF
MOVAH,0AH
INT21H
LEASI,BUF[2]
LEADI,LIB[2]
MOVBX,DI
MOVCX,10
L:
CLD
PUSHCX
MOVCX,4
REPZCMPSB
JNZN
POPCX
MOVSI,BX
LEADI,REPLACE
MOVCX,4
M:
MOVAL,[DI]
MOV[SI],AL
INCDI
INCSI
LOOPM
JMPEXIT
N:
ADDBX,6
MOVDI,BX
LEASI,BUF[2]
LOOPL
EXIT:
LEADX,LIB
MOVAH,09H
INT21H
MOVAH,4CH
INT21H
CODESENDS
ENDSTART
8.现有一组字符串为ram,yes,red,the,get,for,and,key,not,may,请编写程序将他们按ASCII大小排序,并在显示器上显示。
DATASEGMENT
LIBDB'ram',0DH,0AH
DB'yes',0DH,0AH
DB'red',0DH,0AH
DB'the',0DH,0AH
DB'get',0DH,0AH
DB'for',0DH,0AH
DB'and',0DH,0AH
DB'key',0DH,0AH
DB'not',0DH,0AH
DB'may',0DH,0AH,'$'
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,ES:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVDI,9
A:
MOVCX,DI
LEASI,LIB
B:
MOVAL,[SI]
CMPAL,[SI+5]
PUSHSI
JADAYU
JEDENGYU
JBXIAOYU
DENGYU:
INCSI
MOVAL,[SI]
CMPAL,[SI+5]
JADAYU
JBXIAOYU
JEDENGYU
DAYU:
POPSI
PUSHSI
MOVBX,3
JIAOHUAN:
MOVAL,BYTEPTR[SI]
MOVAH,BYTEPTR[SI+5]
MOVBYTEPTR[SI],AH
MOVBYTEPTR[SI+5],AL
INCSI
DECBX
JNZJIAOHUAN
XIAOYU:
POPSI
ADDSI,5
LOOPB
DECDI
JNZA
LEADX,LIB
MOVAH,09H
INT21H
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
9、现有一组字符串为data,name,time,file,code,path,user,exit,quit,text,请编写程序从键盘输入4个字符的字符串,若存在将其删除,并在显示器上显示。
DATASEGMENT
BUFDB05H
DB?
DB05HDUP(?
)
LIBDB0DH,0AH,'data','$'
DB0DH,0AH,'name','$'
DB0DH,0AH,'time','$'
DB0DH,0AH,'file','$'
DB0DH,0AH,'code','$'
DB0DH,0AH,'path','$'
DB0DH,0AH,'user','$'
DB0DH,0AH,'exit','$'
DB0DH,0AH,'quit','$'
DB0DH,0AH,'test','$'
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,ES:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVES,AX
LEADX,BUF
MOVAH,0AH
INT21H
LEASI,BUF[2]
LEADI,LIB[2]
MOVDL,10
L:
PUSHSI
PUSHDI
MOVCX,4
CLD
REPZCMPSB
MOVAX,DI
JEDEL
POPDI
POPSI
ADDDI,7
DECDL
JNZL
JMPEXIT
DEL:
MOVBX,AX
SUBBX,6
EXIT:
LEADX,LIB
MOVCX,10
M:
PUSHDX
CMPDX,BX
JEN
MOVAH,09H
INT21H
N:
POPDX
ADDDX,7
LOOPM
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
10.现有一组字符串为data,name,time,file,code,path,user,exit,quit,text,请编写程序将上述字符串排序(升序)并插入disk使其人仍然有序,并在显示器上显示。
DATASSEGMENT
DATADB0DH,0AH,'time'
DB0DH,0AH,'name'
DB0DH,0AH,'data'
DB0DH,0AH,'file'
DB0DH,0AH,'code'
DB0DH,0AH,'path'
DB0DH,0AH,'user'
DB0DH,0AH,'exit'
DB0DH,0AH,'quit'
DB0DH,0AH,'text','$'
DB05HDUP(?
)
DB'$'
MOREDB0DH,0AH,'disk'
CENTERDB0DH,0AH,'$'
DATASENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS
START:
MOVAX,DATAS
MOVDS,AX
MOVES,AX
LEASI,DATA[2]
LEADI,DATA[8]
MOVCX,09D
CALLRANK
LEADX,CENTER
MOVAH,09H
INT21H
LEADI,DATA[60]
LEASI,MORE[0]
MOVCX,06D
REPMOVSB
LEASI,DATA[2]
LEADI,DATA[8]
MOVCX,0AH
CALLRANK
JMPEXIT
RANKPROCFAR
L:
PUSHCX
PUSHSI
PUSHDI
MAIN:
PUSHCX
PUSHSI
PUSHDI
MOVCX,04D
REPZCMPSB
JAEXCHANGE
M:
POPDI
POPSI
POPCX
ADDSI,06D
ADDDI,06D
LOOPMAIN
POPDI
POPSI
POPCX
LOOPL
JMPPRINT
EXCHANGE:
POPDI
POPSI
PUSHSI
PUSHDI
MOVCX,04D
AGAIN:
MOVBL,[SI]
MOVDL,[DI]
MOV[SI],DL
MOV[DI],BL
INCDI
INCSI
LOOPAGAIN
JMPM
PRINT:
LEADX,DATA
MOVAH,09H
INT21H
RET
RANKENDP
EXIT:
MOVAH,4CH
INT21H
CODESENDS
ENDSTART
11.键盘输入一个十进制数,以十六进制的形式输出。
CODESSEGMENT
ASSUMECS:
CODES
START:
NEXT:
MOVBX,0
CALLINPUT
CALLOUTPUT
JMPNEXT
INPUTPROCNEAR
SHURU:
MOVAH,01H;输入字符
INT21H
CBW;convertbytetoword
CMPAX,0DH;比较是否为回车
JERETURN
CMPAX,'0'
JBEXIT
CMPAX,'9'
JAEXIT
CALLTRANSFORM;确认为0-9的数字,跳转至数值转换TRANSFORM子程序
JMPSHURU;循环操作,直至输入为回车结束
RETURN:
RET;返回CALLINPUT的末尾,即开始执行CALLOUTPUT
INPUTENDP
TRANSFORMPROCNEAR;机器内部的运算都是以ASCII码进行
XCHGAX,BX
SUBBX,30H
MOVCX,10
MULCX
ADDAX,BX
XCHGAX,BX;转换完成的数字存放在BX中
RET
TRANSFORMENDP
OUTPUTPROCNEAR
MOVDH,4
MOVCL,4
CONTINUE:
ROLBX,CL;循环左移,最高位跑到最低位,高第二位跑到最高位,以此类推
MOVDL,BL
ANDDL,0FH;保留低四位内容,放在DL中,通过循环左移后低四位即为一开始最高位,以此类推
CMPDL,9;;这里9不加引号,因为前边已经减掉了30H
JAZIMU
ADDDL,30H
JMPSHUCHU
ZIMU:
ADDDL,37H
SHUCHU:
MOVAH,02H
INT21H
DECDH
CMPDH,0
JNECONTINUE
MOVDL,0AH
MOVAH,02H
INT21H
MOVDL,0DH
MOVAH,02H
INT21H
RET;每个PROC指令中至少包含一个RET
OUTPUTENDP
EXIT:
MOVAH,4CH
INT21H
CODESENDS
ENDSTART
12.键盘输入一个十进制数,以二进制的形式输出。
CODESSEGMENT
ASSUMECS:
CODES
START:
NEXT:
MOVBX,0
CALLINPUT
CALLOUTPUT
JMPNEXT
INPUTPROCNEAR
SHURU:
MOVAH,01H
INT21H
CBW
CMPAX,0DH
JERETURN
CMPAX,'0'
JBEXIT
CMPAX,'9'
JAEXIT
CALLTRANSFORM
JMPSHURU
RETURN:
RET
INPUTENDP
TRANSFORMPROCNEAR
XCHGAX,BX
SUBBX,30H
MOVCX,10
MULCX
ADDAX,BX
XCHGAX,BX
RET
TRANSFORMENDP
OUTPUTPROCNEAR
MOVDH,16
MOVCL,1
CONTINUE:
ROLBX,CL
MOVDL,BL
ANDDL,00000001H
ADDDL,30H
SHUCHU:
MOVAH,02H
INT21H
DECDH
CMPDH,0
JNECONTINUE
MOVDL,0AH
MOVAH,02H
INT21H
MOVDL,0DH
MOVAH,02H
INT21H
RET
OUTPUTENDP
EXIT:
MOVAH,4CH
INT21H
CODESENDS
ENDSTART
13.键盘输入一个二进制数,以十六进制的形式输出。
CODESSEGMENT
ASSUMECS:
CODES
START:
NEXT:
MOVBX,0
CALLINPUT
CALLOUTPUT
JMPNEXT
INPUTPROCNEAR
SHURU:
MOVAH,01H
INT21H
CBW
CMPAX,0DH
JERETURN
CMPAX,'0'
JBEXIT
CMPAX,'1'
JAEXIT
CALLTRANSFORM
JMPSHURU
RETURN:
RET
INPUTENDP
TRANSFORMPROCNEAR
XCHGAX,BX
SUBBX,30H
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 北京理工大学 汇编 上机 试题 答案