2013-12-16 5 views
-1

* 세 개의 8 비트 값의 합계를 찾아서 SUMS 위치에 메모리에 배치하는 어셈블리 프로그램을 작성하려면 저에게 할당 된 작업을 twas. 그런 다음 세 가지 단어 변수의 합을 계산하고, 위치 합계 + 2. 다음의 데이터를 메모리에 배치 :다른 단어 배열에 저장되지 않은 단어 배열의 합

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

내 문제는 다음과 같은 코드가

mov sums,al 

나는 나에게 오류를 제공한다는 것입니다 하나는 16 비트 주소이고 다른 하나는 8 비트 주소라는 것을 이해해야합니다. 그러나 다른 방법은 없습니까?

편집 :

전체 코드 : 내가 질문 할 나 한테 물어 무엇 금액 + (2)의 의미를 이해하지 않는 것이 남아

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 

내 유일한 문제?

+0

아니요, 지금까지 내가 쓴 것이 없습니다. 나는 3 8 비트 값을 추가하려고 시도했습니다. 질문의 나머지 부분은 손길이 닿지 않습니다. – Codex

답변

0
SUMS DW 0,0 
mov sums,al 

배열의 워드 크기를 선언 했으므로 피연산자와 일치해야합니다.

mov sums, ax 
+0

또한 3 단어 변수의 합계를 저장하고 SUMS + 2 위치의 메모리에 배치하는 것은 포인터의 수단을 통해 이루어 집니까? 옳은? – Codex

+0

그건 할 수 있고 말이 되네. 이것에 대한 엄격한 필요는 없습니다. 코드가 누락 되어도 그 부분에 대해서는 언급하지 않았습니다. – Devolus

1

al은 8 비트입니다.

sum은 16 비트입니다.

그래서 충돌이 있습니다.