您的位置:首页 > 编程语言

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

2013-10-30 12:40 363 查看
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

0001


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

如图:

0002


可以看出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的地址进行偏移了。

如图:0003
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: