⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 a9-2.asm

📁 可以用dump命令检查数据区
💻 ASM
字号:
;========================================================================
;A9-2.asm
;实验目的:	熟悉编程格式,掌握通过ldt表访问段的编程方法
;实验结果:	可以用dump命令检查数据区,验证程序的运行结果
;编程注意事项:	ldt表所在段对应的描述符必须在gdt表中声明,程序起始代码段对应描
;		述符也应该在gdt表中声明
;========================================================================
INCLUDE         386SCD.INC
;----------------------------------------------------------------------------
DSEG            SEGMENT use16
;----------------------------------------------------------------------------
GDT             LABEL   BYTE                  		;全局描述符表
ID1		Desc    <0ffffh,0ffffh,0ffh,0ffh,0ffh,0ffh>                    ;空描述符
MCode           Desc    <0ffffh,CSEG,,ATCE,,> 		;代码段描述符
LDTable         Desc    <LDTLen-1,DSEG1,,ATLDT,,>	;局部描述符表段的描述符
;----------------------------------------------------------------------------
GDTLen          =       $-GDT 		                ;全局描述符表长度
MCode_Sel       =       MCode-GDT
LDT_Sel         =       LDTable-GDT		        ;局部描述符表段的选择子
ID2 	        Desc    <0ffffh,0ffffh,0ffh,0ffh,0ffh,0ffh>
DSEG            ENDS                          		;数据段定义结束
                    
DSEG1		SEGMENT use16
LDT		LABEL	BYTE			       	;局部描述符表
DataS           Desc    <0ffffh,0,11h,ATDW,,>		;源数据段描述符
DataD           Desc    <0ffffh,Dseg2,,ATDW,,>		;目标数据段描述符
;----------------------------------------------------------------------------
DataS_Sel       =       DataS-LDT+TIL
DataD_Sel       =       DataD-LDT+TIL
LDTLen          =       $-LDT                 ;局部描述符表长度
ID3	        Desc    <0ffffh,0ffffh,0ffh,0ffh,0ffh,0ffh> 
DSEG1		ENDS
;----------------------------------------------------------------------------
Dseg2           Segment use16
BufLen          =       256                   ;缓冲区字节长度
Buffer          DB      BufLen DUP(0)         ;缓冲区
;----------------------------------------------------------------------------
Dseg2		ends
;----------------------------------------------------------------------------
CSEG            SEGMENT  use16                ;16位代码段
                ASSUME  CS:CSEG
;----------------------------------------------------------------------------
Start           PROC
		mov	ax,LDT_Sel
		lldt	ax
                mov     ax, DataS_Sel
                mov     ds,ax                  ;加载目标数据段描述符
                mov     ax, DataD_Sel
                mov     es,ax                  ;加载源数据段描述符
                cld
                xor     si,si
                xor     di,di                  ;设置指针初值
                mov     cx,BufLen/4            ;设置4字节为单位的缓冲区长度
                repz    movsd                  ;传送
		int	0ffh
Start           ENDP
;----------------------------------------------------------------------------
CSEG            ENDS                           ;代码段定义结束
;----------------------------------------------------------------------------
                END     Start

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -