FASM:如何使用循环在数组中输入值

时间:2018-02-10 14:46:23

标签: arrays loops fasm

此代码对我不起作用。我的目标是询问用户字符串输入,转换为大写字母,然后将它们逐个存储在一个数组中,然后将字符(全部大写)输出回用户。请帮帮我:(

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

1 个答案:

答案 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 而没有其他内容时,此大小写才会起作用。