汇编语言有没有办法缩短我的代码
assembly language is there a way to shorten my code
我的程序是计算用户输入字符中的所有元音我的代码很长,因为部分原因是在比较用户输入是否为元音时。有没有办法缩短我的代码?我是汇编语言的新手,所以我使用基本的助记符
title sample.prog
cstack segment para stack 'stack'
dw 200h
cstack ends
cdata segment para 'data'
msg1 db 'ENTER 9 CHARACTER: $',10,13
msg2 db 10,13,'NUMBER OF VOWELS: $'
cdata ends
ccode segment para 'code'
assume cs:ccode,ds:cdata,ss:cstack
main:
mov ax,cdata
mov ds,ax
mov ah,09h
lea dx,msg1
int 21h
mov cl,0
mov bl,30h
input:
mov ah,01
int 21h
inc cl
cmp al,61h
je incre
cmp al,65h
je incre
cmp al,69h
je incre
cmp al,6fh
je incre
cmp al,75h
je incre
cmp al,'A'
je incre
cmp al,'E'
je incre
cmp al,'I'
je incre
cmp al,'O'
je incre
cmp al,'U'
je incre
cmp cl,9
je ed
jmp input
incre:
inc bl
cmp cl,9
je ed
jmp input
ed:
mov ah, 09h
lea dx,msg2
int 21h
mov ah,02h
mov dl,bl
int 21h
mov ah, 4ch
int 21h
ccode ends
end main
通过首先大写来削减一些代码
and al,1101_1111b
cmp al,'A'
jb skip
cmp al,'Z'
ja skip
cmp al,'A'
je incre
cmp al,'E'
je incre
cmp al,'I'
je incre
cmp al,'O'
je incre
cmp al,'U'
je incre
skip:
或使用列表(在数据部分)
vowels db 'AEIOUaeiou'
...
mov cx,10
mov si,vowels
again:
cmp al,[si]
je incre
inc si
loop again
我的程序是计算用户输入字符中的所有元音我的代码很长,因为部分原因是在比较用户输入是否为元音时。有没有办法缩短我的代码?我是汇编语言的新手,所以我使用基本的助记符
title sample.prog
cstack segment para stack 'stack'
dw 200h
cstack ends
cdata segment para 'data'
msg1 db 'ENTER 9 CHARACTER: $',10,13
msg2 db 10,13,'NUMBER OF VOWELS: $'
cdata ends
ccode segment para 'code'
assume cs:ccode,ds:cdata,ss:cstack
main:
mov ax,cdata
mov ds,ax
mov ah,09h
lea dx,msg1
int 21h
mov cl,0
mov bl,30h
input:
mov ah,01
int 21h
inc cl
cmp al,61h
je incre
cmp al,65h
je incre
cmp al,69h
je incre
cmp al,6fh
je incre
cmp al,75h
je incre
cmp al,'A'
je incre
cmp al,'E'
je incre
cmp al,'I'
je incre
cmp al,'O'
je incre
cmp al,'U'
je incre
cmp cl,9
je ed
jmp input
incre:
inc bl
cmp cl,9
je ed
jmp input
ed:
mov ah, 09h
lea dx,msg2
int 21h
mov ah,02h
mov dl,bl
int 21h
mov ah, 4ch
int 21h
ccode ends
end main
通过首先大写来削减一些代码
and al,1101_1111b
cmp al,'A'
jb skip
cmp al,'Z'
ja skip
cmp al,'A'
je incre
cmp al,'E'
je incre
cmp al,'I'
je incre
cmp al,'O'
je incre
cmp al,'U'
je incre
skip:
或使用列表(在数据部分)
vowels db 'AEIOUaeiou'
...
mov cx,10
mov si,vowels
again:
cmp al,[si]
je incre
inc si
loop again