Proteus 仿真8086时 汇编程序里面有DATA SEGMENT时 CS 在load时会偏移的问题

来源:互联网 发布:淘宝c2c 收费模式 编辑:程序博客网 时间:2024/05/20 23:02

Proteus 仿真8086时 汇编程序里面有DATA SEGMENT时 CS 在load时会偏移的问题

对于 类似于把 DATA SEGMENT写CODE外面时

DATA SEGMENT
OUTBUFF DB 2,0,1,3;显示值
LEDTAB  DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;0~9 段码表
DATA ENDs
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA

…………

CODE ENDS

END START

Proteus  利用这种汇编程序进行仿真时,会把CS的地址进行偏移。这样就不能正确的调试的执行我们的程序。出现的状况如下图:

图1:我们设置的8086 的Program Loading Segment 是0x8000

00010001

虽然是我们设置的8086 的Program Loading Segment 是0x8000,但是执行类似上面的汇编程序在调试时会出现偏移的状况

如图:

00020002

可以看出CS:0801啦,而执行时也从8010开始执行啦。这样就执行不出我想要结果。

解决办法:将DATA SEGMENT 段放入CODE段里就行了。

如:

CODE SEGMENT

DATA SEGMENT
OUTBUFF DB 2,0,1,3;显示值
LEDTAB  DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;0~9 段码表
DATA ENDS

ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA

…………

CODE ENDS

END START

Proteus  利用这种汇编程序进行仿真时,就不会把CS的地址进行偏移了。

如图:00030003




原创粉丝点击