【发布时间】:2015-10-13 18:00:54
【问题描述】:
我正在学习本教程 (http://www.tutorialspoint.com/assembly_programming/assembly_arithmetic_instructions.htm) 并编写这段代码。我喜欢同时打印商和余数,但我没有得到想要的结果。
这是代码:
section .text
global _start
_start:
mov al,9
mov bl,2
div bl
mov bl, al
add bl, byte '0'
mov [res], byte bl
mov bl, ah
add bl, byte '0'
mov [tm], byte bl
mov ecx,msg
mov edx, len
mov ebx,1 ;file descriptor (stdout)
mov eax,4 ;system call number (sys_write)
int 0x80 ;call kernel
mov ecx,res
mov edx,1
mov ebx,1 ;file descriptor (stdout)
mov eax,4 ;system call number (sys_write)
int 0x80 ;call kernel
mov ecx,msg2
mov edx,len2
mov ebx,1 ;file descriptor (stdout)
mov eax,4 ;system call number (sys_write)
int 0x80 ;call kernel
mov ecx,tm
mov edx,1
mov ebx,1 ;file descriptor (stdout)
mov eax,4 ;system call number (sys_write)
int 0x80 ;call kernel
mov eax,1 ;system call number (sys_exit)
int 0x80 ;call kernel
section .data
msg db "The result is:", 0xA,0xD
len equ $- msg
msg2 db 0xA,0xD,"Remainder is:", 0xA,0xD
len2 equ $- msg
segment .bss
tm resb 1
res resb 1
结果:
The result is:
4
Remainder is:
141%
知道哪里出了问题吗?
【问题讨论】:
-
不应该是
len2 equ $- msg2(注意msg后面的2)吗? -
天哪!你完全正确!谢谢