작성자 | 기라졸 | ||
---|---|---|---|
작성일 | 2018-10-19 20:42:56 KST | 조회 | 265 |
제목 |
HELP: MOVE ASSEMBLY, DEATH
|
8086 어셈블리입니다
ax에 값을 넣고 10진수로 변환하는 내용인데
mov ax, 21
;ax에 21 삽입
cmp ax,0
jne print_ax
add ax, 0e30h
int 16h
; if ax == 0, print '0'
print_ax:
cmp ax, 0
; if ax == 0 goto print, else quotient could be bigger than 10 so div 10
je pn_done
mov bx, 10
div bx
push dx
; dx is remainder, ax is quotient
mov dx, 0
call print_ax
mov ah, 0eh
add al, 30h
int 16h
pn_done:
pop dx
mov ax, dx
ret
이렇게하니
pop dx 햇을때
0002H가 나와야하는데 0131H이 나오면서 ret이 작동을 안합니다.
pop dx 한번 더해보니 0002H이 나오는걸 보면 0131에 무슨 뜻이 있는거같기도한데
또 이상한건 pop dx를 두번넣어서
pop dx
pop dx
mov ax, dx 하면 괜찮을줄 알았는데 0131H 0002H 하고 다음 pn_done이 나오면 0001H 010DH가 나와서 에러가 나면서 ret이 또 안되고
뭔가 있는거같아서
pop dx를 여러번 넣어서 확인해보면
0131H 0002H 0131H 0002H 010DH 뒤에는 알수없는 쓰레기값이 막 나오더라구요
어셈블리 아시는분 도움부탁드립니다 흑흑
|
||
|
|
||
|
|
||
|
© PlayXP Inc. All Rights Reserved.