こんにちは私はアセンブラ8086でDESを実行していて、配列がたくさんあります。また、いくつかのプロシージャが必要ですが、配列をプロシージャに送信する方法がわかりません。スタックを使用してみましたが、機能しませんでした。手伝って頂けますか?TASMを使用しています
質問する
3528 次
1 に答える
2
次のように定義された単語の配列があるとします。
myArray dw 10, 9, 8, 7, 6, 5, 4, 3, 2, 1
numItems dw 10
そして、それをプロシージャに渡します。
push myArray ; the address of the array
mov ax, [numItems]
push ax ; the length of the array
call myProc
; if you want the caller to clean up ...
add sp, 4 ; adjust sp to get rid of params
その場合、myProcは次のようになります。
myProc:
mov bp, sp ; save stack pointer
mov cx, [bp+4] ; cx gets the number of items
mov bx, [bp+6] ; bx gets the address of the array
; at this point, you can address the array through [bx]
mov ax, [bx+0} ; first element of the array
mov ax, [bx+2] ; second element of the array
ret 4 ; cleans up the stack, removing the two words you'd pushed onto it
; or, if you want the caller to clean up ...
ret
于 2012-04-14T19:28:28.503 に答える