숫자를 ASCII '숫자 - 텍스트'로 변환하는 아래 코드에이 문제가 있습니다. 그러나 코드가 'div'코드에서 반복되는 것처럼 보입니다.조립 부
;Main Program
main:
mov ax, 0x0000
mov ds, ax ; setup data segment register
mov si, GreetString ; setup data segment offset
call print_string ; call print string procedure
mov si, DataWord ; setup data segment offset
mov bl, 0x000A ; base 10
call format_string ; call format string procedure
mov si, GreetString ; setup data segment offset
call print_string ; call print string procedure
prevent_overflow:
hlt ; halt the CPU
jmp prevent_overflow
format_string:
mov ax, [ds:si] ; load register ax with data
xor cx, cx ; set counter to 0
mov si, GreetString ; set pointer to address of GreetString
.format_char:
div bl ; divides by register bl
add ah, 48 ; convert to ascii numeric
mov [ds:si], ah ; move ascii numeric to ds:si
inc cx ; increase counter
inc si ; increase si
xor ah, ah ; clear ah register
or ax, ax
jnz .format_char ; jump to format next char
ret
왜 이런 현상이 발생합니까? 내 CPU가 최대 값에 있기 때문에 '루프'라고 말하고 div 이후에 opcode를 처리하지 않습니다.
* 업데이트되었습니다. 감사합니다 newgre.
어떤 가치가있는 BL합니까? 명시 적으로 지정하지 마십시오. – newgre
네, 죄송합니다. 내가 메인 섹션에서 할당 했어 mov bl, 0x000A; 밑받침 10 전화 format_string; 전화 형식 문자열 프로 시저 –