北大“汇编语言程序设计”上机考试题(9月13-15日)
作者名:不详 来源:网友提供 06年6月8日
题目:从键盘输入一个长度为n的字符串(0<n<32),要求:
(1) 在进行输入和输出之前必须先显示相应的提示信息;提示信息必须独占一行;输入必须用回车符结束;
(2) 将字符中的大写字母转化为小写字母并将转化后的字符串在屏幕上显示;
(3) 统计字符串中的非数字字符(‘0'——‘9'以外的字符)个数,以十进制输入;
(4) 输出字符串中包含的小写英文字符里面ASCII值最小的一个;
(5) 原文件名必须为M1.asm,可执行文件名必须为M1.exe;
(6) 完成(1),(2),(5)为及格;完成(1),(2),(3),(5)为良好;完成(1),(2),(3),(4),(5)为优秀。
输入一个十进制数(0~255)
1。跟昨天第一题一样(提示信息占一行)
2。按从小到大的顺序以十进制输出能被5整除且小于刚才输入的十进制数的非负整数
3。若刚才输入的十进制数为偶数,以二进制输出该数除以2的结果,否则以二进制输出该数除以3的结果
4。若该数是整数的平方(1,4,9类似),则输出YES,否则输出NO
5。保存M5.asm,存盘M5.exe
(1。2。5)及格;(1。2。3。5)良;(1。2。3。4。5)优秀
2004年9月15日下午汇编上机考题及答案
输入俩十进制的整数
1。在进行输入和输出之前必须先显示相应的提示信息;提示信息必须独占一行;输入必须用回车符结束;
2。判断两数全能整除3,能就输出YSE,否则输出NO
3。用二进制输出这俩数的平均数
4。用十进制输出俩数的差(较大的减较小的)
5。125做了及格,1235良…………
data segment
mess1 db 'please input 2 dec number n(0-255):',0ah,0dh,'$'
mess2 db '(1).whether two nums are all divide 3 exactly: ','$'
mess3 db '(2).output ave in bin: ','$'
mess4 db '(3).the differ of two nums is(in dec): ','$'
mess5 db 'yes!','$'
mess6 db 'no!','$'
num1 db ?
num2 db ?
nozero db 0
data ends
code segment
assume cs:code,ds:data
start:mov ax,data
mov ds,ax
lea dx,mess1
call prompt
call putindec
mov num1,bl
call crlf
call putindec
mov num2,bl
call crlf
lea dx,mess2
call prompt
mov al,num1
mov ah,0
mov bh,3
div bh
cmp ah,0
jne tt
mov al,num2
mov ah,0
mov bh,3
div bh
cmp ah,0
jne tt
lea dx,mess5
call prompt
jmp tt1
tt: lea dx,mess6
call prompt
tt1: call crlf
lea dx,mess3
call prompt
mov al,num1
add al,num2
mov ah,0
mov bh,2
div bh
mov bl,al
call putoutbin
call crlf
lea dx,mess4
call prompt
mov al,num1
cmp al,num2
ja kk
xchg al,num2
kk: sub al,num2
mov bl,al
call putoutdec
exit: mov ah,4ch
int 21h
prompt proc
mov ah,9
int 21h
ret
prompt endp
crlf proc
mov dl,0ah
mov ah,2
int 21h
mov dl,0dh
mov ah,2
int 21h
ret
crlf endp
whitespace proc
mov dl,20h
mov ah,2
int 21h
ret
whitespace endp
putindec proc
push cx
mov bl,0
ppp: mov ah,1
int 21h
cmp al,0dh
je putinexit
sub al,30h
mov ah,0
xchg al,bl
mov bh,10
mul bh
xchg al,bl
add bl,al
jmp ppp
putinexit:pop cx
ret
putindec endp
putoutdec proc
push cx
mov nozero,0
mov cl,100
call main
mov cl,10
call main
mov cl,1
call main
cmp nozero,0
jne ll
mov dl,30h
mov ah,2
int 21h
ll: pop cx
ret
main proc
mov al,bl
mov ah,0
div cl
mov bl,ah
mov dl,al
cmp dl,0
jne ll1
cmp nozero,0
jne ll1
jmp ll2
ll1: mov nozero,1
add dl,30h
mov ah,2
int 21h
ll2: ret
main endp
putoutdec endp
putoutbin proc
push cx
mov nozero,0
mov cl,8
rr2: mov dl,0
test bl,80h
je rr
mov nozero,1
mov dl,1
rr: cmp nozero,0
je rr1
add dl,30h
mov ah,2
int 21h
rr1: shl bl,1
loop rr2
pop cx
ret
putoutbin endp
code ends
end start
|
|