1.从键盘输入1-9任意一个数字,在屏幕上输出对应月份的英文单词。
例如:
输入:1,输出:January
输入:3,输出:March
提示:
Str1 db ‘January$’
Str2 db ‘February$’
……
addr dw str1,str2……
说明:数组addr 中存的是各个字符串的首地址。
代码:
data segment
s1 db 'January$'
s2 db 'February$'
s3 db 'March$'
s4 db 'April$'
s5 db 'May$'
s6 db 'June$'
s7 db 'July$'
s8 db 'August$'
s9 db 'September$'
addr dw s1,s2,s3,s4,s5,s6,s7,s8,s9
data ends
code segment
assume cs:code,ds:data
main proc far
start:
mov ax,data
mov ds,ax
mov ah,01h
int 21h
sub al,31h
add al,al
mov ah,00h
mov si,ax
mov dx,addr[si]
mov ah,09h
int 21h
mov ax,4c00h
int 21h
code ends
end start
2.从键盘输入一个四位十六进制数,然后以二进制形式在屏幕上显示出来。
要求:输入的四个数码必须先拼成一个四位十六进制数,然后再做输出处理。
例如:
输入:3A49
输出:0011101001001001
stk segment stack
dw 20 dup(?)
stk ends
code segment
assume cs:code,ss:stk
main proc far
start:
mov cx,4
mov bx,0000h
mov dx,0400h
L1:
mov ah,01h
int 21h
sub al,30h
cmp al,0ah
jb S1
sub al,07h ;此时al中放的是读入的数字
S1:
mov dl,al
mov ax,bx ;bx存放拼成的数
push cx
mov cx,4
shl ax,cl
add al,dl
mov bx,ax
pop cx
loop L1
mov ah,02h
mov dl,0ah ;换行
int 21h
mov ah,02h ;换行
mov dl,0dh
int 21h
mov cx,16
L2:
shl bx,1 ;bx每次左移一位,影响标志位
mov dl,00h
adc dl,30h ;带进位的加法
mov ah,02h
int 21h
loop L2
mov ax,4c00h
int 21h
main endp
code ends
end start
3.从键盘输入一个长度不超过30的十进制数字串,计算数字串中各数据字和,并以十进制形式输出。
提示:用A号功能调用输入数字串。
例如:
输入:12459703 经计算,1+2+4+5+9+7+0+3=31
输出:31
data segment
buf db 30
len db ?
str db 30 dup(?)
data ends
stack segment stack
dw 30 dup(?)
stack ends
code segment
assume cs:code,ds:data,ss:stack
main proc far
start:
mov ax,data
mov ds,ax
lea dx,buf ;将缓冲区首偏移地址str放到dx
mov ah,0Ah ;A号功能调用,读入字符串
int 21h
mov dl,0ah ;打印换行符,不会将输入的数据覆盖
mov ah,02h
int 21h
xor cx,cx
mov cl,len ;将字符串的长度送入cl
xor bx,bx ;将ax清零开始累加
lea si,str
dec si
L1:
inc si
mov al,[si]
sub al,30h ;将字符的ASCII码值转为数字
add bx,ax ;bl中存放累加的结果
loop L1
mov bh,0 ;此时bl中存的就是得到的每个输入数字的和
mov cx,0 ;cx置0计数
mov si,10 ;待转换的数需要/10
mov ax,bx
stk: mov dx,0 ;字除法余数放在dx中,商放在ax中
div si
add dx,30h
push dx ;余数入栈
inc cx ;计数器++
cmp ax,0 ;看商是否为0
jnz stk ;jnz结果不为0则转移
L2:
pop dx
mov ah,02h
int 21h
loop L2
mov ax,4c00h ;程序结束
int 21h
main endp
code ends
end start