playXP

서브 메뉴

Page. 2008 / 12505 [내 메뉴에 추가]
글쓰기
작성자 아이콘 기라졸
작성일 2018-10-19 20:42:56 KST 조회 267
제목
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 뒤에는 알수없는 쓰레기값이 막 나오더라구요

 

어셈블리 아시는분 도움부탁드립니다 흑흑

 

 

지속적인 허위 신고시 신고자가 제재를 받을 수 있습니다.
신고 사유를 입력하십시오:

발도장 찍기
아이콘 기라졸 (2018-10-19 20:48:54 KST)
0↑ ↓0
센스 이미지
누군가 이 jot같은 언어에서 날 구해줘..
아이콘 기라졸 (2018-10-19 21:02:30 KST)
0↑ ↓0
센스 이미지
call, ret stack이 eip가 아니라 dx 스택에 저장되는 거였나 ??

pn_done:
pop dx
mov bx, dx
pop dx
mov ax, dx
mov dx, bx
push dx
ret

로 고치니까 정상작동하네요
아이콘 기라졸 (2018-10-19 21:02:43 KST)
0↑ ↓0
센스 이미지
병신같은 어셈블리으 세카이..
댓글을 등록하려면 로그인 하셔야 합니다. 로그인 하시려면 [여기]를 클릭하십시오.
롤토체스 TFT - 롤체지지 LoLCHESS.GG
소환사의 협곡부터 칼바람, 우르프까지 - 포로지지 PORO.GG
배그 전적검색은 닥지지(DAK.GG)에서 가능합니다
  • (주)플레이엑스피
  • 대표: 윤석재
  • 사업자등록번호: 406-86-00726

© PlayXP Inc. All Rights Reserved.