몇 가지 코드 언어로 작업을 중단 한 지 얼마되지 않아 며칠 전 학교에서 어셈블리로 시작 했으므로 몇 가지 코드 작업에 대한 논리를 이해하기 시작했습니다.
사실, 내가 시도한 것은 두 변수 간의 간단한 ADD 연산입니다. 내 코드를 에뮬레이션하기 위해 emu8086을 사용합니다. 왜 내가 이해할 수 없는지 보여 드리겠습니다. 난 그냥 8 비트에 세 개의 변수, 그 두 가지를 초기화 나는 두 번째로 첫 번째를 추가 할 지금어셈블리에서 ADD 연산
stack segment
dw 128 dup(0)
ends
data segment
x DB 3
y DB 5
r DB 0
ends
code segment
mov ah,x
mov al,y
add ah,al
mov r,ah
ends
:
코드는 다음과 같다.
문제는 다음과 같습니다. 코드를 에뮬레이트하고 어떤 단계로 진행되는지 확인하려면 첫 번째 단계는 AH=03
이어야하며 CDh를 출력하는 것으로 보입니다 (내 x var이 아님). 이유를 알 수 없습니다. AL
에 대해서도 마찬가지입니다.
내 말은 왜 x와 y 대신에 AH
과 AL
레지스터에 다른 것을 쓰게 될까요?
데이터 세그먼트를 가리 키도록 DS를 설정하는 것을 잊어 버린 것 같습니다. – Jester
죄송합니다.하지만 어떻게해야합니까? –