汇编程序我怎样才能访问数组的元素?
Assembler How can i get acces to the elements of array?
我的汇编程序(16 位)有问题
当我输入 'abc' 时,它也会 return 我 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 "$"
当然可以。
您的字符串只是一个字节序列。
更简单的方法是实际命名 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]
将加载 al
中字符串的 (X + 1)th
字符(对于 assemble 时已知的 X
- 即静态)。
mov bx, X
+ mov al, BYTE [string + bx]
将加载 al
中字符串的 (X + 1)th
字符(对于运行时已知的 X
- 即动态)。
我的汇编程序(16 位)有问题 当我输入 'abc' 时,它也会 return 我 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 "$"
当然可以。
您的字符串只是一个字节序列。
更简单的方法是实际命名 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]
将加载 al
中字符串的 (X + 1)th
字符(对于 assemble 时已知的 X
- 即静态)。
mov bx, X
+ mov al, BYTE [string + bx]
将加载 al
中字符串的 (X + 1)th
字符(对于运行时已知的 X
- 即动态)。