Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 程序集循环的预期输出不正确_Assembly_X86_Nasm - Fatal编程技术网

Assembly 程序集循环的预期输出不正确

Assembly 程序集循环的预期输出不正确,assembly,x86,nasm,Assembly,X86,Nasm,我没有得到预期的输出。我有一个循环应该持续10倍,然后第二个循环应该持续10倍。循环应单独打印 section .data msg1: db "first",10,0 msg2: db "second",10,0 len1: equ $-msg1 len2: equ $-msg2 section .bss num resb 1 ;reserve 1 byte section .text global main mai

我没有得到预期的输出。我有一个循环应该持续10倍,然后第二个循环应该持续10倍。循环应单独打印

section .data
    msg1:   db  "first",10,0
    msg2:   db  "second",10,0
    len1:   equ $-msg1
    len2:   equ $-msg2
section .bss
    num resb    1    ;reserve 1 byte
section .text
    global main
main:
    mov [num], BYTE 10d ;num = 10
    loop:
    mov edx,    len1
    mov ecx,    msg1
    mov ebx,    1
    mov eax,    4
    int 80h
    dec BYTE [num]      ; num--
    cmp [num], BYTE 0
    jnz loop        ; jump if not equal to zero

    mov [num], BYTE 20d ; num = 20
    loop2:
    mov edx,    len2
    mov ecx,    msg2
    mov ebx,    1
    mov eax,    4
    int 80h
    sub [num], BYTE 2   ; num = num - 2
    cmp [num], BYTE 0
    ja loop2        ; jump if above 0

    mov eax,    1
    mov ebx,    0
    int 80h
我越来越
首先
第二
第一
第二
第一
第二
第一
第二
第一
第二
第一
第二
第一
第二
第一
第二
第一
第二
第一
第二
第二
第二
第二
第二
第二
第二
第二
第二
第二
第二个

但是我期待第一秒第一秒第二秒


我是装配(NASM)新手,我做错了什么?

问题在于您的定义:

section .data
msg1:   db  "first",10,0
msg2:   db  "second",10,0
len1:   equ $-msg1
len2:   equ $-msg2
这里您的意思是
msg1
包含所有第一条消息和第二条消息

那应该是

msg1:   db  "first",10,0
len1:   equ $-msg1

msg2:   db  "second",10,0
len2:   equ $-msg2

问题在于您在此处的定义:

section .data
msg1:   db  "first",10,0
msg2:   db  "second",10,0
len1:   equ $-msg1
len2:   equ $-msg2
这里您的意思是
msg1
包含所有第一条消息和第二条消息

那应该是

msg1:   db  "first",10,0
len1:   equ $-msg1

msg2:   db  "second",10,0
len2:   equ $-msg2