Это может быть выполнено в защищенном режиме или режиме реального адреса, как я могу изменить, в котором это работает?

Еще один вопрос о моем классе программирования, ну, на самом деле, несколько. Для начала программа уже написана, а код можно найти ниже.

Вопрос 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- "Карта" - это файл, который показывает, как сегменты расположены в вашем коде. Он также может отображать символы и их виртуальные адреса. Файл компоновщика демонстрирует расположение команд, значения и их отношение к отдельным опкодам, которые вы вводите. Оба из них могут быть сгенерированы вашим компилятором.

Другие вопросы по тегам