📄 3p6t1.asm
字号:
;**********************************************************************
; 保护方式下的编程示例 陈家祺 1996.6
; ---考查段高速缓冲寄存器的作用
;
; 1 实方式进入保护方式及保护方式返回实方式方法;
; 2 保护方式下的指令操作(直接写屏,满屏显示'A').
; 不能装栽Emm386.exe,因为Emm386.exe装载后,cpu处于虚拟8086方式下
;结论:
; 1 在实方式下, 段高速缓冲寄存器同样发挥作用;
; 2 在实方式下, 每当改变段寄存器的内容时, 段高速缓冲寄存器的基地址发生改变: * 环境: MASM6.0,DOS6.2,DOS7.0, 80486主机, Himem.sys,
; 即, 基地址=段寄存器的内容*16.
; 3 当进行工作方式切换后, 段高速缓冲寄存器的内容不变, 除非向段寄存器
; 送入选择字(保护方式下)或段基地址(实方式下);
;**********************************************************************
.MODEL small
.386p
.STACK ; 堆栈段, 堆栈空间为1024
.DATA ; 数据段
char db 'A' ; 要显示的字符
.CODE ; 代码段
.STARTUP ; 初始化DS,SS和SP
cli
call prot ; 调用保护方式操作子程
sti
mov ah,0
int 16h ; BIOS键盘中断调用,等待按键!
.EXIT 0 ; 返回DOS!
prot proc near
mov ax,0b800h
mov es,ax
mov eax,cr0
or al,1 ; 设置控制寄存器CR0的PE位
mov cr0,eax ; 进入保护方式
; 进入保护方式
mov bx,0
mov ah,17h ; 字符颜色属性,蓝底白字
mov al,char ; 显示字符'A'
mov es:[bx],ax
mov eax,cr0
and al,0feh ; 清除控制寄存器CR0的PE位
mov cr0,eax ; 切换到实方式
; 返回到实方式
ret
prot endp
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -