emu8086汇编语言
从键盘上输入N个字符(N<16),求这N个字符中’A’的个数,并将’A’的个数显示在屏幕上。
data segment
string db "input string:$"
ends
stack segment
dw 128 dup(0)
ends
code segment
assume ds:data,cs:code;
start:
mov ax, data;
mov ds, ax ;
lea dx, string;
mov ah, 9;
int 21h;
mov si,00h;
mov dx,0000h;
l0: mov ah, 1;
int 21h;
cmp al,0dh;
jz l1;
call countA;
jmp l0;
l1: mov si,dx;
mov ah,2;
mov dl,0ah;
int 21h;
mov dl,0dh;
int 21h;
call output;
mov ax, 4c00h ;
int 21h
countA proc
cmp al,'A';
jz plus;
ret;
plus:
add dl,1;
ret;
countA endp;
output proc
cmp si,10;
jb l2;
sub si,10;
mov dl,31h;
mov ah,2;
int 21h;
l2: mov dx,si;
add dx,30h;
mov ah,2;
int 21h;
ret;
output endp;
ends;
end start ;
- 用cmp al,0dh;语句来判断输入是否结束。
- 输出时分为A的个数大于10,小于10两种情况。
- 输出时要给dl加30,得到数字对应的ASCII码值。