模拟器:emu8086
- (简答题)
编程1:键盘输入2个数字字符,求其成绩,要求:完成编程与调试
(1)成绩保存变量中;
(2)成绩显示在显示屏上。
data segment
str DB 0,0,'$'
ans DW 0
data ends
code segment
assume cs:code,ds:data
start :mov ah, 1
int 21h
sub al,'0'
mov bl, al
mov ah, 1
int 21h
sub al,'0'
mul bl
mov ans, ax ;将ax中的乘积保存在ans中
aam ;乘法的十进制调整指令
mov bh,ah
mov bl,al
add bh,30h
mov str,bh ;将乘积十位的ascii码保存在字符串的第一个位置
add bl,30h
mov [str+1],bl ;将乘积个位的ascii码保存在字符串的第一个位置
mov [str+2],'$'
lea dx,str ;输出答案
mov ah,9
int 21h
mov ax,4c00h
int 21h
code ends
end start
编程2
编程统计变量S(200个数)中正数、负数、0的个数,分别存放到变量Z、F、L中,并求出所有正数的平均值(整数)存放到P变量中。
data segment
s db 120 dup(-29) ,40 dup(0),20 dup (9) ,20 dup(3)
z db 0
f db 0
l db 0
p db 0
sum dw 0
str db 'ok',0dh,0ah,'$'
data ends
code segment
assume cs:code,ds:data
start: mov ax,data
mov ds,ax
lea si,s
mov cx,200
cld
lop:lodsb ;si to al
cmp al,00h
je lin ;zero
test al,80h
jnz fu ;fushu
inc z ;zhen
mov bx, sum
add bl ,al
mov sum ,bx
jmp again
lin: inc l
jmp again
fu: inc f
jmp again
again: loop lop
mov ax ,sum
div z
mov p,al
;type num of z
mov dl,'z'
mov ah, 2
int 21h
mov dl,'='
mov ah, 2
int 21h
mov al,z
cbw
mov bl ,10
idiv bl
mov cl ,ah
add cl ,30h
cbw
idiv bl
add ax,3030h
mov bx,ax
mov dl,bl
mov ah,2
int 21h
mov dl,bh
mov ah,2
int 21h
mov dl,cl
mov ah,2
int 21h
mov dl,0dh
mov ah,2
int 21h
mov dl,0ah
mov ah,2
int 21h
;type num of f
mov dl,'f'
mov ah, 2
int 21h
mov dl,'='
mov ah, 2
int 21h
mov al,f
cbw
mov bl ,10
idiv bl
mov cl ,ah
add cl ,30h
cbw
idiv bl
add ax,3030h
mov bx,ax
mov dl,bl
mov ah,2
int 21h
mov dl,bh
mov ah,2
int 21h
mov dl,cl
mov ah,2
int 21h
mov dl,0dh
mov ah,2
int 21h
mov dl,0ah
mov ah,2
int 21h
;type num of l
mov dl,'l'
mov ah, 2
int 21h
mov dl,'='
mov ah, 2
int 21h
mov al,l
cbw
mov bl ,10
idiv bl
mov cl ,ah
add cl ,30h
cbw
idiv bl
add ax,3030h
mov bx,ax
mov dl,bl
mov ah,2
int 21h
mov dl,bh
mov ah,2
int 21h
mov dl,cl
mov ah,2
int 21h
mov dl,0dh
mov ah,2
int 21h
mov dl,0ah
mov ah,2
int 21h
;type num of p
mov dl,'p'
mov ah, 2
int 21h
mov dl,'='
mov ah, 2
int 21h
mov al,p
cbw
mov bl ,10
idiv bl
mov cl ,ah
add cl ,30h
cbw
idiv bl
add ax,3030h
mov bx,ax
mov dl,bl
mov ah,2
int 21h
mov dl,bh
mov ah,2
int 21h
mov dl,cl
mov ah,2
int 21h
mov dl,0dh
mov ah,2
int 21h
mov dl,0ah
mov ah,2
int 21h
lea dx,str
mov ah, 9
int 21h
mov ax, 4c00h
int 21h
code ends
end start