首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >打印整数NASM

打印整数NASM
EN

Stack Overflow用户
提问于 2015-01-14 19:09:26
回答 1查看 873关注 0票数 0

我试图从用户中读取3个数字,并将它们存储在一个数组中,然后在NASM中使用paul函数显示它们,下面是我的代码:

代码语言:javascript
复制
%include "asm_io.inc"

SECTION .bss 

tab resb 3

SECTION .data 
msg db "Un nombre :",10 

SECTION .text 
 global main 
      main:
    mov esi,tab 
    xor ecx,ecx 
get_data:   
    mov eax,msg 
    call print_string 
    call read_int 
    mov [esi+ecx],eax   
    inc ecx 
    cmp ecx,3 
    jne get_data
    call print_nl
    xor ecx,ecx 
    mov edi,tab 
print_data: 
    mov eax,[edi+ecx]
    call print_int 
    inc ecx 
    cmp ecx,3 
    jne print_data 






    mov eax,1 ; exit code 
    int 0x80 ; call exit 

问题是,它不执行print_data循环并退出。

EN

回答 1

Stack Overflow用户

发布于 2015-01-15 11:47:55

只是想说清楚。这些是你做的改变吗?即使ECX寄存器没有用作特定函数的输入或输出,它也可能在内部使用。这就是Michael的意思,“ecx通常是被调用者保存的”

代码语言:javascript
复制
%include "asm_io.inc"

SECTION .bss 

tab resd 3

SECTION .data 
msg db "Un nombre :",10,0

SECTION .text 
global main 
main:
mov edi,tab 
xor ecx,ecx 
get_data:
push ecx   
mov eax,msg 
call print_string 
call read_int 
mov [edi+ecx*4],eax   
pop ecx
inc ecx 
cmp ecx,3 
jne get_data
call print_nl
mov esi,tab
xor ecx,ecx  
print_data: 
push ecx
mov eax,[esi+ecx*4]
call print_int 
pop ecx
inc ecx 
cmp ecx,3 
jne print_data 

mov eax,1 ; exit code 
int 0x80 ; call exit 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27950629

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档