In meinem Programm versuche ich, zwischen 2 referenzierten Werten zu wechseln, aber es scheint, ich habe ein Problem bei der Dereferenzierung des ersten Parameters aus dem Stapel ohne Verwendung SI-Register.Assembly 8086: Parameterwerte durch Referenz tauschen
Kann mir bitte jemand helfen? Sorry für Misknowladge, ich bin nur ein Neuling.
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
Was Sie getan haben, war nur die beiden Werte zu laden, vergessen Sie, sie wieder in den Speicher zu schreiben. Nicht sicher, was dein Problem mit "si" ist. – Jester
@jester Derzeit ist mein Problem den Wert des zweiten Parameters dereferenzieren, was mache ich falsch? –
Soweit ich das beurteilen kann, ist der Code in Ordnung, abgesehen von fehlenden Klammern um '[bp + 4]'. Was Sie brauchen, ist das Ergebnis zurückzuschreiben, das Sie vermissen 'mov [si], dx; mov [bx], Axt ". – Jester