此代码对我不起作用。我的目标是询问用户字符串输入,转换为大写字母,然后将它们逐个存储在一个数组中,然后将字符(全部大写)输出回用户。请帮帮我:(
org 100h
mov bl, 0
mov ah, 9
mov dx, input
int 21h
again:
mov ah, 1
int 21h
sub al, 20h
mov [inp+bl], al
inc bl
cmp bl, 2
jle again
loops:
mov bl, 0
mov ah, 2
mov dl, [inp+bl]
int 21h
inc bl
cmp bl, 2
jle loops
mov ax, 4Ch
int 21h
input db 'Input: ',24h
output db 'Output: ',24h
inp db 20 dup(?), 24h
答案 0 :(得分:0)
mov [inp+bl], al
这里的主要问题是您使用的是一种根本不存在的寻址模式!
如果您将BL
的每个实例都更改为BX
,则可以快速更正代码。
mov bx, 0
mov ah, 9
mov dx, input
int 21h
again:
mov ah, 1
int 21h
sub al, 20h
mov [inp+bx], al
inc bx
cmp bx, 2
jle again
loops:
mov bx, 0
mov ah, 2
mov dl, [inp+bx]
int 21h
inc bx
cmp bx, 2
jle loops
sub al, 20h
也许你过度简化了代码,因为只有当用户只输入小型大写字母 a..z 而没有其他内容时,此大小写才会起作用。