Proteus进行8086汇编程序仿真的步骤:
方式一:
第一步,用记事本创建xxx.asm文件
第二步编写程序
第三步将此文件拷贝的C盘
第四步打开终端,切换至C盘存放xxx.asm文件的位置(切换命令:cd xxx)
第五步输入 :masm xxx.asm
(xxx为文件名)(dir 命令查看当前目录的所有文件)
第六步输入:link xxx.obj
(warning:没有设置堆栈,在做实验时此警告可不用管)
第七步将编译汇编链接生成的 .exe文件加载到Proteus中
(在Proteus中双击8086芯片,再弹出界面中的找到生成的.exe文件)
第八步运行程序
备注:此种方式涉及的编译链接文件已上传(我已设置零积分免费下载,若博客下载需要积分,联系我私发给你)。
方式二:
1.将masm32文件夹拷贝到d盘(或其它盘)根目录下
2.打开ISIS 7 Professional,在Source 菜单下点击“Define Code Generation Tools”,并单击“New”按钮
3.点击“Browse”按钮,找到masm32.bat 所在的位置;设置代码生成规则
4.添加源代码,选择对应的编译工具
5. 在Source 菜单下点击“Build All”,编译源代码
6.运行仿真
演示实验:
程序源码:
IO0 EQU 00H
IO1 EQU 10H
IO2 EQU 20H
IO3 EQU 30H
IO4 EQU 40H
IO5 EQU 50H
IO6 EQU 60H
IO7 EQU 70H
IO8 EQU 80H
IO9 EQU 90H
IO10 EQU 0A0H
IO11 EQU 0B0H
IO12 EQU 0C0H
IO13 EQU 0D0H
IO14 EQU 0E0H
IO15 EQU 0F0H
DATA SEGMENT
OUTBUFF DB 1,2,0,4
LEDTAB DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV AL,88H
MOV DX,IO3+6
OUT DX,AL
MOV AL,00110000B
MOV DX,IO5+6
OUT DX,AL
MOV DX,IO5
MOV AX,500
OUT DX,AL
MOV AL,AH
OUT DX,AL
MOV AL,01110110B
MOV DX,IO5+6
OUT DX,AL
MOV DX,IO5+2
MOV AX,5
OUT DX,AL
MOV AL,AH
OUT DX,AL
AGAIN:
MOV DX,IO3+2
MOV AL,0H
OUT DX,AL
MOV DX,IO3+4
IN AL,DX
TEST AL,20H
JZ L1
TEST AL,40H
JZ L2
TEST AL,80H
JZ L3
JMP LOP1
L1:
MOV CL,06H
AGAIN1:
MOV DX,IO3+2
MOV AL,CL
OUT DX,AL
MOV BX,10
CALL DELAY
ROL CL,1
MOV DX,IO3+4
IN AL,DX
TEST AL,20H
JZ AGAIN1
JMP AGAIN
L2:
MOV CL,0FFH
AGAIN2:
MOV DX,IO3+2
MOV AL,CL
OUT DX,AL
MOV BX,10
CALL DELAY
NOT CL
MOV DX,IO3+4
IN AL,DX
TEST AL,40H
JZ AGAIN2
JMP AGAIN
L3:
MOV CL,55H
AGAIN3:
MOV DX,IO3+2
MOV AL,CL
OUT DX,AL
MOV BX,10
CALL DELAY
NOT CL
MOV DX,IO3+4
IN AL,DX
TEST AL,80H
JZ AGAIN3
JMP AGAIN
LOP1:
CALL DISP
JMP AGAIN
DISP PROC NEAR
AGAIN4:
MOV CL,08H
LEA SI,OUTBUFF
LEDDISP:
MOV AL,CL
MOV DX,IO3+4
OUT DX,AL
LEA BX,LEDTAB
MOV AL,[SI]
XLAT
MOV DX,IO3
OUT DX,AL
CALL DELAY_1S
MOV AL,0FFH
MOV DX,IO3
OUT DX,AL
CMP CL,01H
JZ NEXT
INC SI
ROR CL,1
JMP LEDDISP
NEXT:
RET
DISP ENDP
DELAY_1S PROC
PUSH CX
PUSH BX
MOV BX,01H
D1:
MOV CX,0FH
D2:
LOOP D2
DEC BX
JNZ D1
POP BX
POP CX
RET
DELAY_1S ENDP
DELAY PROC
PUSH CX
PUSH BX
WAIT0:
MOV CX,2801
WAIT1:
LOOP WAIT1
DEC BX
JNZ WAIT0
POP CX
POP BX
RET
DELAY ENDP
CODE ENDS
END START
仿真图: