北京理工大学汇编语言上机考试试题和代码Word格式.doc
《北京理工大学汇编语言上机考试试题和代码Word格式.doc》由会员分享,可在线阅读,更多相关《北京理工大学汇编语言上机考试试题和代码Word格式.doc(75页珍藏版)》请在冰点文库上搜索。
ENDSTART
取巧:
DATASEGMENT
DB512DUP('
);
定义可输入的字符个数
BUFDB'
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
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返回
CODEENDS
2. 请任意输入一个字符串,统计其中空格和A的个数,并将结果显示在屏幕上。
BUFDB0FFH
DB?
DB0FFHDUP(?
OUTPUTDB0DH,0AH,'
A=000'
DB0DH,0AH,'
SPACE=000'
'
ASSUMECS:
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],'
JECAR2
MOVOUTPUT[10],'
0'
INCOUTPUT[9]
CAR2:
MOVOUTPUT[9],'
INCOUTPUT[8]
NOTA:
'
JNENEXT
CMPOUTPUT[21],'
JECSR1
INCOUTPUT[21]
CSR1:
CMPOUTPUT[20],'
JECSR2
MOVOUTPUT[21],'
INCOUTPUT[20]
CSR2:
MOVOUTPUT[20],'
INCOUTPUT[19]
NEXT:
INCSI
LOOPL
LEADX,OUTPUT
MOVAH,09H
MOVAX,4C00H
CODEENDS
END
3. 请任意输入一个字符串,将其中的空格全部删除,并将结果显示在屏幕上。
BUF1DB0FFH
DB?
DB0FFHDUP('
?
'
BUF2DB0DH,0AH,0FDHDUP('
ASSUMECS:
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
MOVAX,4C00H
END
4. 请任意输入一个字符串,将其中A换成B,并将结果显示在屏幕上。
BUFDB0FFH
DB?
DB0FFHDUP('
LEADX,BUF
MOVCL,BUF[1]
LEASI,BUF[2]
JNEM
MOVBYTEPTR[SI],'
B'
INCSI
MOVWORDPTR[SI],0D0AH
MOVBYTEPTR[SI+2],'
LEADX,BUF[2]
5. 请任意输入一个字符串,将其中A换成CC,并将结果显示在屏幕上。
BUF1DB0FFH
DB?
DB0FFHDUP('
BUF2DB0DH,0AH,0FDHDUP('
)
MOVWORDPTR[DI],'
CC'
ADDDI,2
JMPN
N:
6. 请任意输入一个字符串,将其中大写字母换成小写字母,并将结果显示在屏幕上。
CMPBYTEPTR[DI],'
a'
JNBM
ORBYTEPTR[DI],00100000B
7. 请任意输入一个字符串,将其中的英文字母全部删除,并将结果显示在屏幕上。
JMPNEXT
z'
JNAN
JBH
H:
Z'
JAO
O:
NEXT:
8. 现有一组字符串为data,name,time,file,code,path,user,exit,quit,text,请编写程序从键盘输入4个字符的字符串,若存在将其修改为disk,并在显示器上显示。
BUFDB05H
DB?
DB05HDUP('
LIBDB0DH,0AH,'
data'
DB0DH,0AH,'
name'
DB0DH,0AH,'
time'
file'
code'
path'
user'
DB0DH,0AH,'
exit'
DB0DH,0AH,'
quit'
text'
REPLACEDB'
disk'
DATAS,ES:
MOVES,AX
LEADX,BUF
LEASI,BUF[2]
LEADI,LIB[2]
MOVBX,DI
MOVCX,10
CLD
PUSHCX
MOVCX,4
REPZCMPSB
JNZN
POPCX
MOVSI,BX
LEADI,REPLACE
M:
MOVAL,[DI]
MOV[SI],AL
INCSI
LOOPM
JMPEXIT
N:
ADDBX,6
MOVDI,BX
EXIT:
LEADX,LIB
9. 现有一组字符串为ram,yes,red,the,get,for,and,key,not,may,请编写程序将他们按ASCII大小排序,并在显示器上显示。
LIBDB'
ram'
0DH,0AH
DB'
yes'
red'
the'
get'
for'
and'
key'
not'
may'
0DH,0AH,'
DATA,ES:
START:
MOVAX,DATA
MOVDI,9
A:
MOVCX,DI
LEASI,LIB
B:
MOVAL,[SI]
CMPAL,[SI+5]
PUSHSI
JAH
JEO
JBR
O:
H:
POPSI
MOVBX,3
M:
MOVAL,BYTEPTR[SI]
MOVAH,BYTEPTR[SI+5]
MOVBYTEPTR[SI],AH
MOVBYTEPTR[SI+5],AL
INCSI
DECBX
JNZM
R:
ADDSI,5
LOOPB
DECDI
JNZA
LEADX,LIB
MOVAH,4CH
ENDSTART
10. 现有一组字符串为data,name,time,file,code,path,user,exit,quit,text,请编写程序从键盘输入4个字符的字符串,若存在将其删除,并在显示器上显示。
BUFDB05H
DB05HDUP(?
LIBDB0DH,0AH,'
test'
MOVES,AX
LEADI,LIB[2]
MOVDL,10
L:
PUSHDI
MOVCX,4
CLD
REPZCMPSB
MOVAX,DI
JEDEL
POPDI
POPSI
ADDDI,7
DECDL
JNZL
JMPEXIT
DEL:
MOVBX,AX
SUBBX,6
EXIT:
MOVCX,10
M:
PUSHDX
CMPDX,BX
JEN
N:
POPDX
ADDDX,7
LOOPM
MOVAH,4CH
ENDSTART
11. 现有一组字符串为data,name,time,file,code,path,user,exit,quit,text,请编写程序将上述字符串排序(升序)并插入disk使其人仍然有序,并在显示器上显示。
DB?
DB0DH,0AH,0FDHDUP('
tishiDB0DH,0AH,'
PLEASEINPUTANOTHERSTRING:
EXTRADB05H
DB?
DB5DUP(?
CALLSORT
CALLOUTPUT
CALLINSERT
MOVDI,10
SORTPROCNEAR
LEASI,LIB[2]
CMPAL,[SI+6]
MOVBX,4
MOVAH,BYTEPTR[SI+6]
MOVBYTEPTR[SI+6],AL
ADDSI,6
RET
SORTENDP
OUTPUTPROCNEAR
OUTPUTENDP
INSERTPROCNEAR
LEADX,TISHI
MOVAH,9
LEADX,EXTRA
MOVBYTEPTRLIB[60],0DH
MOVBYTEPTRLIB[61],0AH
MOVBH,4
MOVSI,62
MOVDI,2
LOOP1:
MOVAL,EXTRA[DI]
MOVLIB[SI],AL
INCDI
DECBH
JNELOOP1
MOVAL,'
;
LEADX,LIB
MOVAH,09H
INSERTENDP
EXIT:
12. 键盘输入一个十进制数,以十六进制的形式输出。
;
键盘输入一个十进制数,以十六进制的形式输出
DATASEGMENT
DATAENDS
MOVDS