北大“汇编语言程序设计”上机考试题(9月13)

来源:百度知道 编辑:UC知道 时间:2024/05/17 16:02:58
题目:从键盘输入一个长度为n的字符串(0<n<32),要求:

(1) 在进行输入和输出之前必须先显示相应的提示信息;提示信息必须独占一行;输入必须用回车符结束;

(2) 将字符中的大写字母转化为小写字母并将转化后的字符串在屏幕上显示;

(3) 统计字符串中的非数字字符(‘0’——‘9’以外的字符)个数,以十进制输入;

(4) 输出字符串中包含的小写英文字符里面ASCII值最小的一个;

(5) 原文件名必须为M1.asm,可执行文件名必须为M1.exe;

data segment
A DB 'please input a string:',13,10,'$'
B DB 33,?,33 dup('$')
C DB 13,10,'please output a string:',13,10,'$'
D DB 50 DUP('$')
ASC DB 13,10,2 DUP(?),13,10,"$"
count=$-D
data ends
code segment
assume cs:code,ds:data,es:data
start:
mov ax,data
mov ds,ax
mov es,ax
mov cx,32
lea dx,A
mov ah,9
int 21h
lea dx,B
mov ah,10
int 21h
mov si,offset B+2
mov di,offset D
cld
return:
movsb
cmp byte ptr[si],24h
je next1
loop return
next1:
lea dx,C
mov ah,9
int 21h
mov di,offset D
next4:
mov dl,byte ptr[di]
cmp dl,'A'
jb next2
or dl,20h
mov byte ptr[di],dl
next2:
cmp dl,13
jz next3
inc di
jmp next4
next3:
lea dx,D
mov ah,9
int 21h
mov bl,0
mov dl,0
cld
mov si,offset