私のプログラムで私は2参照された値の間で交換しようとしていますが、私はSIレジスタを使用せずにスタックから最初のパラメータを逆参照する問題があるようです。アセンブリ8086:参照でパラメータ値をスワップ
私を助けてもらえますか?申し訳ありませんがmisknowladge、私はちょうど初心者です。 call swap
後
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
2つの値をロードするだけで、メモリに書き戻すのを忘れました。あなたの問題が「si」であるかどうかは分かりません。 – Jester
@jester現在、私の問題は2番目のパラメータの値を逆参照しています。何が間違っていますか? –
私が知る限り、コードは '[bp + 4]'の括弧がないこと以外は問題ありません。あなたが必要とするのは、スワップされた結果を書き戻すことです。つまり、あなたは 'mov [si]、dx; mov [bx]、ax'。 – Jester