北京理工大学汇编语言上机考试试题和代码.doc
《北京理工大学汇编语言上机考试试题和代码.doc》由会员分享,可在线阅读,更多相关《北京理工大学汇编语言上机考试试题和代码.doc(75页珍藏版)》请在冰豆网上搜索。
![北京理工大学汇编语言上机考试试题和代码.doc](https://file1.bdocx.com/fileroot1/2022-10/2/4fa35f35-0c61-4f1d-a6ee-58c7199df017/4fa35f35-0c61-4f1d-a6ee-58c7199df0171.gif)
北京理工大学汇编上机试题和代码
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
取巧:
DATASEGMENT
DB512DUP('$');定义可输入的字符个数
BUFDB'$'
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVBX,OFFSETBUF;指针指向待显示字符串尾部
AGAIN:
MOVAH,01;输入字符
INT21H
CMPAL,0DH;是回车吗
JEDISP;是,转显示
DECBX;指针减1
MOV[BX],AL;存入输入的字符
JMPAGAIN;继续输入
DISP:
MOVDX,BX;定位待显示字符串首地址
MOVAH,09
INT21H;显示
MOVAH,4CH;DOS返回
INT21H
CODEENDS
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换成B,并将结果显示在屏幕上。
DATASEGMENT
BUFDB0FFH
DB?
DB0FFHDUP('?
')
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
LEADX,BUF
MOVAH,0AH
INT21H
MOVCX,0
MOVCL,BUF[1]
LEASI,BUF[2]
L:
CMPBYTEPTR[SI],'A'
JNEM
MOVBYTEPTR[SI],'B'
M:
INCSI
LOOPL
MOVWORDPTR[SI],0D0AH
MOVBYTEPTR[SI+2],'$'
LEADX,BUF[2]
MOVAH,09H
INT21H
MOVAX,4C00H
INT21H
CODEENDS
END
5. 请任意输入一个字符串,将其中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
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:
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
7. 请任意输入一个字符串,将其中的英文字母全部删除,并将结果显示在屏幕上。
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
INC