Системное программное обеспечение. Особенности программирования 32-разрядных процессоров. Рощин А.В. - 22 стр.

UptoLike

Составители: 

22
138 and eax,0fffffffeh ; Сброс бита 0
139 mov cr0,eax ; Запись cr0
140 db 0eah ; Код команды дальнего перехода
141 dw return ; Смещение
142 dw text ; Сегмент кода
143 ;*****************************************************
144 ;* Теперь процессор опять работает в реальном режиме *
145 ;*****************************************************
146 ;Восстановление операционной среды реального режима
147 return:
148 mov ax,data ; Инициализация сегментных регистров
149 mov ds,ax ; данных и
150 mov ax,stk ; стека
151 mov ss,ax ; в реальном режиме
152 ;Мы не восстанавливает содержимое SP, так как при таком мягком (без
153 ; сброса) переходе в реальный режим SP не разрушается
154 ;Разрешение всех прерываний
155 sti ; Разрешение маск. прерываний
156 mov al,0 ; Сброс бита 7 порта 70 КМОП -
157 out 70h,al ; разрешение NMI
158 ;Вывод сообщения в реальном режиме
159 mov ah,9 ; Вывод сообщения
160 mov dx,offset mes ; функцией DOS
161 int 21h
162 ;Ожидание нажатия клавиши
163 xor ah,ah
164 int 16h
165 ; Завершение программы
166 mov ax,4c00h
167 int 21h
168 main endp
169 code_size=$-main
170 text ends
171 stk segment stack 'stack'
172 db 256 dup(0)
173 stk ends
174 end main
К тексту программы добавлены номера строк, которые облегчат
описание отдельных команд в тексте. Следует иметь в виду, что перед
трансляцией показанного текста, необходимо удалить все номера строк,
так как компилятор на каждый номер будет выдавать ошибку.
32-разрядные микропроцессоры отличаются расширенным набором
команд, часть которых относится к привилегированным. Для того, чтобы
разрешить транслятору обрабатывать эти команды, в текст программы
138       and eax,0fffffffeh          ; Сброс бита 0
139       mov cr0,eax           ; Запись cr0
140       db 0eah               ; Код команды дальнего перехода
141       dw return             ; Смещение
142       dw text               ; Сегмент кода
143   ;*****************************************************
144   ;* Теперь процессор опять работает в реальном режиме *
145   ;*****************************************************
146   ;Восстановление операционной среды реального режима
147   return:
148       mov ax,data ; Инициализация сегментных регистров
149       mov ds,ax ; данных и
150       mov ax,stk ; стека
151       mov ss,ax ; в реальном режиме
152   ;Мы не восстанавливает содержимое SP, так как при таком мягком (без
153   ; сброса) переходе в реальный режим SP не разрушается
154   ;Разрешение всех прерываний
155       sti             ; Разрешение маск. прерываний
156       mov al,0        ; Сброс бита 7 порта 70 КМОП -
157       out 70h,al      ; разрешение NMI
158   ;Вывод сообщения в реальном режиме
159       mov ah,9         ; Вывод сообщения
160       mov dx,offset mes ; функцией DOS
161       int 21h
162   ;Ожидание нажатия клавиши
163       xor ah,ah
164       int 16h
165   ; Завершение программы
166       mov ax,4c00h
167       int 21h
168   main    endp
169   code_size=$-main
170   text    ends
171   stk     segment     stack 'stack'
172           db          256 dup(0)
173   stk     ends
174           end         main


       К тексту программы добавлены номера строк, которые облегчат
описание отдельных команд в тексте. Следует иметь в виду, что перед
трансляцией показанного текста, необходимо удалить все номера строк,
так как компилятор на каждый номер будет выдавать ошибку.
       32-разрядные микропроцессоры отличаются расширенным набором
команд, часть которых относится к привилегированным. Для того, чтобы
разрешить транслятору обрабатывать эти команды, в текст программы


                                        22