關於我的編程課的另一個問題,其實很少。 開始的程序已經寫好,代碼可以在下面找到。這可以在保護模式或實地址模式下運行,我如何更改運行的內容?
問題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
在這種情況下,我的編譯器是Microsoft的Visual Studio使用包含的編譯器爲x86進行彙編,我該如何獲取它來吐出這些文件?我還認爲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)。有關地圖文件,請參閱[這裏](http://msdn.microsoft.com/en-us/library/k7xkk3e2.aspx)。 –