【发布时间】:2011-02-04 16:59:46
【问题描述】:
我正在尝试组装。现在我有一个简单的 while 循环,从 eax = 1 开始,然后循环直到 eax = 10。在循环中,我使用打印宏来打印进度(应该打印 1 - 10),但它不起作用..
section .bss
buffer resd 1
section .text
global _start
%macro write 3
mov eax, 4
mov ebx, %1
mov ecx, %2
mov edx, %3
int 80H
%endmacro
_start:
xor eax, eax
inc eax
while:
cmp eax, 10
jg end
mov [buffer], eax
write 1, [buffer], 1
mov eax, [buffer]
inc eax
jmp while
end:
mov eax, 1
xor ebx, ebx
int 0x80
c 的等价物是:
#include <stdio.h>
int main(void)
{
unsigned int i = 1;
while(i <= 10)
{
printf("%d", i);
i++;
}
return 0;
}
所以我的问题是.. 我如何使用 write 宏来打印值?我有什么需要改变的?
谢谢
【问题讨论】:
-
如果您使用汇编语言工作,则需要学习以十六进制阅读和思考。您当然可以编写转换为十进制的代码,并且会为用户指定的输出执行此操作,但是在监视代码时,它是二进制的简写,而十六进制是一个近乎理想的简写。
标签: linux assembly printing integer nasm