本文介绍了[组装]我该如何循环?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在处理一些汇编代码,因此需要分隔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
推荐答案
这篇关于[组装]我该如何循环?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!