汇编跳转错误
来源:百度知道 编辑:UC知道 时间:2024/05/29 08:09:45
.386P
INCLUDE 386SCD.ASM
ECHOCH MACRO ascii
MOV AH,2
MOV DL,ascii
INT 21H
ENDM
DSEG SEGMENT USE16
GDT LABEL BYTE
DUMMY DESCRIPTOR<>
CODE DESCRIPTOR<0FFFFH,,,ATCE,>
CODE_SEL=CODE-GDT
;DATAS DESCRIPTOR<0FFFFH,0H,11H,ATDW,0>
;DATAS_SEL=DATAS-GDT
;DATAD DESCRIPTOR<0FFFFH,,,ATDW,>
;DATAD_SEL=DATAD-GDT
GDTLEN=$-GDT
VGDTR PDESC<GDTLEN-1,>
;BUFFERLEN=256
;BUFFER DB BUFFERLEN DUP(0)
DSEG ENDS
CSEG SEGMENT USE16
ASSUME CS:CSEG,DS:DSEG
START:
MOV AX,DSEG
MOV DS,AX
MOV BX,16
MUL BX
ADD AX,OFFSET GDT
ADC DX,0
MOV WORD PTR VGDTR.BASE,AX
MOV WORD PTR
INCLUDE 386SCD.ASM
ECHOCH MACRO ascii
MOV AH,2
MOV DL,ascii
INT 21H
ENDM
DSEG SEGMENT USE16
GDT LABEL BYTE
DUMMY DESCRIPTOR<>
CODE DESCRIPTOR<0FFFFH,,,ATCE,>
CODE_SEL=CODE-GDT
;DATAS DESCRIPTOR<0FFFFH,0H,11H,ATDW,0>
;DATAS_SEL=DATAS-GDT
;DATAD DESCRIPTOR<0FFFFH,,,ATDW,>
;DATAD_SEL=DATAD-GDT
GDTLEN=$-GDT
VGDTR PDESC<GDTLEN-1,>
;BUFFERLEN=256
;BUFFER DB BUFFERLEN DUP(0)
DSEG ENDS
CSEG SEGMENT USE16
ASSUME CS:CSEG,DS:DSEG
START:
MOV AX,DSEG
MOV DS,AX
MOV BX,16
MUL BX
ADD AX,OFFSET GDT
ADC DX,0
MOV WORD PTR VGDTR.BASE,AX
MOV WORD PTR
这条跳转指令执行后,不仅汇编程序本身进入保护模式,而且DEBUG也进入了386保护模式,情况就复杂了.导致发生重启异常.
所以此程序是DEBUG无法正常调试的.
但不影响汇编程序本身,重启不代表你编写的程序错误,而是因为DEBUG.