gpt4 book ai didi

linux - NASM添加程序

转载 作者:太空宇宙 更新时间:2023-11-04 04:11:37 25 4
gpt4 key购买 nike

我是一名使用高级语言的开发人员,业余时间学习汇编语言。请参阅下面的 NASM 计划:

section .data

section .bss

section .text
global main
main:
mov eax,21
mov ebx,9
add eax,ebx
mov ecx,eax
mov eax,4
mov ebx,1
mov edx,4
int 0x80
push ebp
mov ebp,esp

mov esp,ebp
pop ebp
ret

以下是我使用的命令:

ian@ubuntu:~/Desktop/NASM/Program4$ nasm -f elf -o asm.o SystemCalls.asmian@ubuntu:~/Desktop/NASM/Program4$ gcc -o 程序 asm.oian@ubuntu:~/Desktop/NASM/Program4$ ./program

我没有收到任何错误,但是终端上没有打印任何内容。我使用以下链接来确保寄存器包含正确的值:http://docs.cs.up.ac.za/programming/asm/derick_tut/syscalls.html

最佳答案

您必须将整数值转换为字符串才能使用sys_write(系统调用4)打印它。转换可以这样完成(未经测试):

; Converts the integer value in EAX to a string in
; decimal representation.
; Returns a pointer to the resulting string in EAX.
int_to_string:
mov byte [buffer+9],0 ; add a string terminator at the end of the buffer
lea esi,[buffer+9]
mov ebx,10 ; divisor
int_to_string_loop:
xor edx,edx ; clear edx prior to dividing edx:eax by ebx
div ebx ; EAX /= 10
add dl,'0' ; take the remainder of the division and convert it from 0..9 -> '0'..'9'
dec esi ; store it in the buffer
mov [esi],dl
test eax,eax
jnz int_to_string_loop ; repeat until EAX==0
mov eax,esi
ret

buffer: resb 10

关于linux - NASM添加程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18834760/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com