我试着用汇编程序创建它,只需检查m>n并给出一个文本或增加一个num。
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编辑
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并跳转到上面,但现在只能停留在这里
发布于 2014-05-11 17:17:41
c++
int m = 10;
int n = 1;
while (m > n) {
n++;
}变成了
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。所以,当时间条件没有过去时,我们就跳下去。
https://stackoverflow.com/questions/23595183
复制相似问题