标签:count 谷歌 code sci 环境 pre nas g++ int
sudo apt install nasm
sudo apt install gcc-multilib
数字0到9的ascii为0x30~0x39,类似第3节中sprintLf中换行的实现,0x0Ah是换行‘\n‘,第3节打印的是0x0A,这里打印的是0x30,0x31...
%include ‘function.asm‘
SECTION .text
global _start
_start:
mov ecx, 30h ; ecx一般用做计数器
nextnum:
cmp ecx, 3Ah ; 等于0x3A就表明完了
jz countfinished
push ecx ; 此时esp指向的栈上地址的内容为0x30 0x00 0x00 0x00
mov eax, esp ; 打印esp指向的栈上地址
call sprintLF
inc ecx
jmp nextnum
countfinished: call quit
打印10稍微有点不同,因为0x3Ah并不是10,我得想办法打印出1,然后跟着0,组合成10.
mov eax, 00003031h ;
push eax ;此时esp指向的栈上地址的内容为0x31 0x30 0x00 0x00
mov eax, esp
call sprintLF ;这样打印的话就是10
标签:count 谷歌 code sci 环境 pre nas g++ int
原文地址:https://www.cnblogs.com/whuwzp/p/nasm_0-10.html