в моей программе. Я пытаюсь поменять местами между двумя ссылочными значениями, но, похоже, у меня возникла проблема в разыменовании первого параметра из стека без использования регистра SI.Сборка 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], ax'. – Jester