Это может быть выполнено в защищенном режиме или режиме реального адреса, как я могу изменить, в котором это работает?
Еще один вопрос о моем классе программирования, ну, на самом деле, несколько. Для начала программа уже написана, а код можно найти ниже.
Вопрос 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
1 ответ
1. Основное различие между реальным и защищенным режимами состоит в том, что в реальном режиме любая программа может получить доступ к любой ячейке памяти, а в защищенном режиме программы могут получить доступ только к определенным ячейкам памяти, предназначенным для них. Проблемы с реальным режимом очевидны - любая программа на вашем компьютере может наблюдать за каждым вашим движением. Поскольку это серьезная проблема безопасности, реальный режим устарел, и теперь почти все современные операционные системы работают в защищенном режиме.
Ваша программа может работать в любом режиме, так как она не имеет доступа к каким-либо за пределами ячейки памяти. Весь код размещен в памяти и остается в рамках. Регистры общего назначения не хранятся в памяти, поэтому вы тоже в безопасности.
2- Вы правы. Берегись, хотя, если ax
подписывается, то значение 265
слишком велик для 16-битного регистра.
3- "Карта" - это файл, который показывает, как сегменты расположены в вашем коде. Он также может отображать символы и их виртуальные адреса. Файл компоновщика демонстрирует расположение команд, значения и их отношение к отдельным опкодам, которые вы вводите. Оба из них могут быть сгенерированы вашим компилятором.