汇编器如何获取数组元素?

时间:2018-11-23 13:48:11

标签: assembly dos x86-16

我遇到汇编程序问题(16位) 当我输入“ abc”时,它也返回我abc。问题是,我如何获得对“ a”(第一个元素)的访问权? 我可以使用堆栈(用于字符)吗?

org 100h

Start:
mov ah,0ah
mov dx,input
int 21h

mov ah,9
mov dx,label
int 21h
mov ah,9
mov dx,input+2
int 21h

End:
mov ax,4c00h
int 21h

label db 10,13,"Your characters: $"
input db 6
db 0
times 8 db "$"

1 个答案:

答案 0 :(得分:0)

是的,当然。
您的字符串只是一个字节序列。

更简单的方法是实际命名Int 21h/AH=0ah服务使用的结构的所有部分:

label db 10,13,"Your characters: $"

input    db 6
str_len  db 0
string:  times 8 db "$"

然后:

mov al, BYTE [str_len]可用于在al中加载字符串的长度(任何8位寄存器均可)。
mov al, BYTE [string + X]将在(X + 1)th中加载字符串的al字符(对于在汇编时已知的X-即静态)。
mov bx, X + mov al, BYTE [string + bx]将在(X + 1)th中加载字符串的al字符(对于运行时已知的X-即动态)。