[英]Print x86 assembly array
我在x86汇编中打印数组时遇到问题。
我希望每次打印一个数组,每个循环结束时使用换行符,但似乎我尝试使用的代码是错误的。 这里是:
SECTION .data
Matrix:
db "00000"
db "00000"
db "01110"
db "00000"
db "00000",10
NewLine: db 10
SECTION .text
global _start
_start:
mov esi,2
mov eax,4
mov ebx,1
mov ecx,[Matrix+esi]
mov edx,5
int 80h
mov eax,4
mov ebx,1
mov ecx,NewLine
mov edx,1
int 80h
mov eax,1
mov ebx,0
int 80h
我在这个简化案例中的目标是打印由五个元素组成的Matrix的第三行,换行符和退出。 我得到的输出只是换行符。
我认为发生的事情是这样的:
mov ecx,NewLine
将NewLine的地址放在ECX中,这个:
mov ecx,[Matrix+esi]
将内容 Matrix + ESI放入ECX。 您应该将地址放入ECX中。
当它显然是Linux代码时,为什么这个标记为“dos”? 无论如何,MRAB建议的“lea”解决方案应该可行。 使用esi = 2,它只会将您移动到第一行的第二个字节 - 如果要打印第三行,则需要esi为10 ......等。
最好,弗兰克
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.