【发布时间】:2019-10-17 07:57:53
【问题描述】:
我有一个汇编程序,它在一行上打印出 1 到 9 的数字,如下所示:123456789。我想要的是在每一行上打印这些值;每行一个数字。
我尝试实现新行,但在我的代码中抛出错误分段错误(核心转储)。我在组装方面仍然很新鲜,所以我真的不知道如何找出为什么这不起作用。它只打印第一个数字 (1),然后抛出该错误。
我尝试换行的代码:
mov dl, 13
mov ah, 02h
int 21h
mov dl, 10
mov ah, 02h
int 21h
我的代码:
_start:
mov ecx, 10
mov eax, '1'
L1:
mov [num], eax
mov eax, 4
mov ebx, 1
push ecx
mov ecx, num
mov edx, 1
int 0x80
mov eax, [num]
sub eax, '0'
inc eax
add eax, '0'
pop ecx
loop L1
mov eax, 1
int 0x80
section .bss
num resb 1
【问题讨论】:
-
“我尝试实施新行” - 告诉我们你做了什么?
-
@DavidWohlferd 我编辑了帖子以明确我尝试了什么。
-
为什么在“我尝试过的代码”部分与“我的代码”部分产生不同的中断?是 DOS 的“我尝试过的代码”和 Linux 的“我的代码”吗?
-
另外,为什么你只在“我试过的代码”中加载 16 位 reg,而不是在“我的代码”中加载完整的 32 位 reg?
-
@我正在使用 Linux,很抱歉造成混乱。