繁体   English   中英

打印x86组装阵列

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM