2015-01-29 3 views
0

선을 제거한 후 이상한 결과, 나는이 문제 해결 : 우리는 작은 프로그램이 제공됩니다총회 8086 오늘과 준비에서 시험을

을, 우리는 무엇을 말할 필요하고 무엇을 *

data 
A DB '1A2B3C4D' 
B DB 10 DUP(?) 
C DB 4 
.CODE 
MOV AX,@DATA 
MOV DS,AX 
XOR BX,BX 
XOR SI,SI 
XOR CX,CX 
MOV CL,C 
LOP1: MOV AL,A[BX] 
AND AL,0FH ;* 
MOV AH,A[BX+1] 
LOP2: MOV B[SI],AH 
INC SI 
DEC AL 
JNZ LOP2 
ADD BX,2 
LOOP LOP1 
END: MOV AH,4CH 

표시된 줄을 제거하면 문제가 발생합니다. 프로그램이 간단하고 이해하기 쉽습니다. 배열 ABBCCCDDDD을 주소 B (데이터 세그먼트에 정의 됨)에 놓습니다.

이제 *로 줄을 제거하면 어떻게 될지 묻습니다. AL은 바이트이므로 0Fh는 바이너리의 11111111 바이트이므로 11111111 = AL이므로 아무 것도 변경되지 않습니다.

하지만 선생님에 따르면, "AND AL, 0Fh"줄이 없다면 문자 A의 49 배, 문자 B의 50 배, 문자 B의 51 배를 쓸 것이기 때문에 차이가있을 것입니다. 문자 C, 그 문자의 ASCII 값 thats 때문입니다. 그게 사실 및 설명

답변

1

에게이 일을하려는 이유가 표시되지 않습니다

이 올바르지 않습니다 : 는 "0FH는 바이트입니다 그것 단지 11111111"

그것은 FFh가 있어야한다. 0Fh는 00001111입니다.

+0

오, 맞습니다. 실수입니다. –