本文介绍了[组装]我该如何循环?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

限时删除!!

我正在处理一些汇编代码,因此需要分隔WORD变量的数字(12345).我已完成此操作,但不确定如何循环此操作:

I was working on some Assembly code, and I need to separate the digits of my WORD variable (12345). I''ve done this, and I am unsure as to how to loop this:

org 100h

section .text

start:
    mov bx, output  ; put address of output into BX
    mov ax, [num]   ; put 16-bit value stored at num in AX
    sub dx, dx      ; let DX = 0

    mov cx, 10000   ; Divide AX by 10000
    div cx          ; result in AX, remainder in DX
    add al, 30h     ; ASCII '1' = 49 (or 31h) so add 30h
    mov [bx], al    ; Store ASCII char in output
    inc bx          ; point to next char in output
    mov ax, dx      ; move remainder of last division into AX
    sub dx, dx      ; clear remainder

    mov cx, 1000    ; Divide AX by 1000
    div cx
    add al, 30h
    mov [bx], al
    inc bx
    mov ax, dx
    sub dx, dx

    mov cx, 100     ; Divide AX by 100
    div cx
    add al, 30h
    mov [bx], al
    inc bx
    mov ax, dx
    sub dx, dx

    mov cx, 10      ; Divide AX by 10
    div cx
    add al, 30h
    mov [bx], al
    inc bx
    mov ax, dx
    sub dx, dx

    mov cx, 1
    div cx
    add al, 30h
    mov [bx], al

    mov bx, output  ; get address of first char in ouput

myloop:
    mov dl, [bx]    ; get char at address in BX
    inc bx          ; point BX to next char in message
    cmp dl, 0       ; Is DL = null (that is, 0)?
    je  quit        ; If yes, then quit
    mov ah, 06      ; If no, then call int 21h service 06h
    int 21h         ;    to print the character
    jmp myloop      ; Repeat for the next character

quit:
    ; DONE!
    int 20h

section .data
    num dw  12345
    output  db  0,0,0,0,0,0

推荐答案


这篇关于[组装]我该如何循环?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

1403页,肝出来的..

09-08 15:22