首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >而在x86-64程序集中

而在x86-64程序集中
EN

Stack Overflow用户
提问于 2014-05-11 16:37:38
回答 1查看 2.4K关注 0票数 1

我试着用汇编程序创建它,只需检查m>n并给出一个文本或增加一个num。

代码语言:javascript
复制
section .data
        numb: db "Enter a number: "

section .bss

section .text

        global _start:
_start:
        mov rax, 4
        mov rbx, 1
        mov rcx, 5
        cmp rdx, 7
        ja

编辑

代码语言:javascript
复制
section .data
        numb: db "Enter a number: "

section .bss

section .text

        global _start:
_start:
        mov rax, 4
        mov rbx, 1
        mov rcx, numb
        cmp rcx, 7
        ja

我使用64位寄存器。但我不知道怎么可能,因为汇编程序没有while语句,所以我们必须使用cmp并跳转到上面,但现在只能停留在这里

EN

回答 1

Stack Overflow用户

发布于 2014-05-11 17:17:41

c++

代码语言:javascript
复制
int m = 10;
int n = 1;

while (m > n) {
  n++;
}

变成了

代码语言:javascript
复制
    mov rax, 10     ' m
    mov rbx, 1      ' n

start_loop:

    cmp rax, rbx    ' Compare m and n
    jle exit_loop   ' Conditional jump on <= which is the same as !>
    add rbx, 1      ' Body
    jmp start_loop  ' Unconditional jump

exit_loop:

跳跃之间的一切都是身躯。棘手的地方正在变>变成jle。这是因为我们希望在while条件失败时执行条件跳转,而不是在它经过时执行条件跳转。因此,它不是>变成jg,而是变成jle。所以,当时间条件没有过去时,我们就跳下去。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23595183

复制
相关文章

相似问题

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