내 프로그램에서 2 참조 된 값 사이의 스왑을 시도하고있어하지만 SI 레지스터를 사용하지 않고 스택의 첫 번째 매개 변수를 역 참조하는 데 문제가있는 것 같습니다.Assembly 8086 : 참조로 매개 변수 값을 스와핑
나를 도와 줄 수 있습니까? misknowladge 미안 해요, 난 그냥 초보자입니다.
jmp main
toSwap1 db 'a'
toSwap2 db 'b'
main:
lea si,toSwap1
push si
lea si,toSwap2
push si
call swap
mov ah,0
int 16
ret
swap proc
push bp
mov bp,sp
mov si,bp+4 ;second param address
mov ax,[si] ;second param value
mov bx,[bp+6] ;address of firstparam
mov dx,ds:[bx] ;first param value
mov sp,bp
pop bp
retn 4 ;takes 2 parameters
swap endp
그냥 두 값을로드 한 것이므로 메모리에 다시 쓰는 것을 잊었을 때입니다. 'si'에 어떤 문제가 있는지 잘 모르겠습니다. – Jester
@jester 현재 내 문제는 두 번째 매개 변수의 값을 역 참조하는 것입니다. 내가 뭘 잘못하고있는 걸까요? –
내가 알 수있는 한, 코드는'[bp + 4]'주위에 괄호가 빠져있는 것을 제외하고는 괜찮습니다. 필요한 것은 스왑 된 결과를 다시 쓰는 것입니다. 즉,'mov [si], dx; mov [bx], 도끼. – Jester