내 프로그래밍 클래스에 대한 또 다른 질문은, 실제로는 몇 가지입니다. 프로그램은 이미 작성되었으며 코드는 아래에서 찾을 수 있습니다.보호 모드 또는 실제 주소 모드에서 실행할 수 있습니다. 실행중인 모드를 어떻게 변경합니까?
질문 # 1 :
이제 지침에 명시 적으로 프로그램이 보호 모드 또는 실제 주소 모드에서 수행 할 수 있다고. 나는 Windows가 보호 모드에서 실행된다는 것을 확실히 알고 있으며 이러한 방식으로 연습을 완료했다는 것을 의미합니다. 원한다면 프로그램이 어떤 모드를 실행하게 할까? Windows가 보호 모드에서 작동한다고 말하는 것이 맞습니까?
질문 # 2 : 나는 아래의 어셈블리 코드에서 몇 가지 의견을 작성했습니다
는 사람은 레지스터의 처음 16 비트가 올바른 채워진 어떻게 주장합니까?
질문 # 3 : 최종 제출에 목록 파일 및 지도 파일의 포함을위한
마지막 명령어 호출, 나는이 파일을 찾을 수 없습니다.
TITLE Subtracting Three Integers
; This program takes three integers in hexidecimal and then subtract the 2nd and 3rd from the first.
INCLUDE Irvine32.inc
.code
main PROC
mov ax,0109h ;stores integer 265 in ax(16-bit register)
mov bx,0041h ;stores integer 65 in bx(16-bit register)
mov cx,0064h ;stores integer 100 in cx(16-bit register)
sub ax,bx
sub ax,cx
call DumpRegs
comment !
The dump regs returns the value of EAX=763B0064 BAX=7FFD0041 CAX=00000064
because EAX EBX and ECX are 32-bit registers they fill the first 16-bits with
unallocated data from other programs
!
exit
main ENDP
END main
이 경우 제 컴파일러는 포함 된 컴파일러를 사용하여 x86 용으로 어셈블 된 Microsoft의 Visual Studio입니다. 어떻게 파일을 추출 할 수 있습니까? 또한 16 비트는 +/- 65,535까지 처리 할 수 있고 8 비트는 +/- 255로 제한되어 있다고 생각합니다. 비트가 레지스터에 다른 양을 저장합니까? –
@ Mr.Kruel 약 16 비트 - 0 ~ 65,535 또는 -256 ~ 256이 될 수 있습니다. -65,535 ~ 65,535 일 수 없습니다. –
@ Mr.Kruel 목록 파일은 [여기] (http://msdn.microsoft.com/en-us/library/367y26c6.aspx)를 참조하십시오. 맵 파일은 [here] (http://msdn.microsoft.com/en-us/library/k7xkk3e2.aspx)를 참조하십시오. –