Как найти последнее значение AX и BX в следующем коде? - PullRequest
0 голосов
/ 18 марта 2020
    mov ax, 15
    mov bx, 0Fh
    cmp ax,bx
    jle a1
    mov bx,10
    mov cx,3
    jmp a2
 a1:
    move ax,12
    mov cx,5
 a2:
    dec ax
    inc bx
    loop a2;

1 Ответ

1 голос
/ 18 марта 2020

Просто выполняя инструкции по одной (например, используя this , чтобы посмотреть, что делает каждая инструкция)

    mov ax, 15     # ax = 15
    mov bx, 0Fh    # bx = 15 (since 0Fh = 15)
    cmp ax,bx      
    jle a1         # if (ax <= bx) jump to a1 -> true
    mov bx,10      # Therefore these not executes
    mov cx,3
    jmp a2
 a1:
    mov ax,12      # ax = 12
    mov cx,5       # cx = 5
 a2:
    dec ax         # ax = ax - 1
    inc bx         # bx = bx + 1
    loop a2;       # cx = cx - 1 AND if (cx != 0) then jump to a2. Since cx is 5 when
                   # reaching here therefore looping 4 times which means overall the
                   # effect is ax = ax - 4 = 12 - 4 = 8 and bx = bx + 4 = 15 + 4 = 19

AX будет 8, а BX будет 19 после выполнения этого code.

Исправлено на основе наблюдения за орлиными глазами @ecm.

...