-1

*私に割り当てられたタスクは、3 つの 8 ビット値の合計を見つけてメモリ内の位置 SUMS に配置するアセンブリ プログラムを作成することでした。次に、3 つのワード変数の合計を計算し、メモリ内の SUMS + 2 の位置に配置します。次のデータを使用します。

BYTE_ARRAY DB 10H,20H,30H
WORD_ARRAY DW 1000H,2000H,3000H
SUMS DW 0,0*

私の問題は、次のコードでエラーが発生することです

mov sums,al

1 つは 16 ビット アドレスで、もう 1 つは 8 ビット アドレスであることは理解していますが、それを回避する方法はありますか?

編集:

完全なコード:

    org 100h

.data 
byte_array db 10h,20h,30h
word_array dw 1000h,2000h,3000h


sums dw 0,0

.code

mov ax,@data
mov ds,ax
mov bx,offset byte_array
mov al,[bx]
inc bx
add al,[bx]
inc bx
add al,[bx]
mov si,offset sums
mov [si],al

mov bx,offset word_array
mov ax,[bx]
add ax,[bx+2]
add ax,[bx+4]
mov [bx+6], ax





ret

残っている私の唯一の問題は、SUMS + 2 の意味を理解していないことです。何をするように求める質問ですか?

4

2 に答える 2

1

alは8ビットです。

sumは 16 ビットです。

だから彼らは対立しています。

于 2013-12-17T08:29:22.990 に答える
0
SUMS DW 0,0
mov sums,al

配列がワードサイズであると宣言したので、オペランドはそれと一致する必要があります。

mov sums, ax
于 2013-12-16T14:31:02.480 に答える