📄 3_flashm.asm
字号:
;//*****************************************************
;文件名: FlashM for 8088
;功能: 闪存读写实验
;接线: 用导线连接闪存模块的CS_FLASH到地。
; 扩展输出模块的CS_273到CPU模块的200H;
; 扩展输出模块的JD1C到八位逻辑电平显示模块的JD4B。
;//*****************************************************
ADDR1 EQU 0000H
ADDR2 EQU 0010H
D273 EQU 200H
data segment
data ends
stack segment
sta dw 50 dup(?)
top equ length sta
stack ends
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA
START:
PUSH CS
POP DS
NOP
NOP
CALL CHIP_ERASE ; 芯片擦除
CALL DELAY
NOP ; 运行到这一行,观察附加段数据
MOV BX,ADDR1
MOV AH,55H ; 向设定的位置写入55H
CALL BYTE_WRITE
NOP ; 运行到这一行,观察附加段ADDR1数据
MOV BX,ADDR1
MOV DL,ES:[BX] ; 读数据1
NOP ; 运行到这一行,观察DL数据
MOV AL,DL
MOV DX,D273 ; 并行输出口地址
OUT DX,AL ; 输出数据1
NOP ; 运行到这一行,LED显示数据1
MOV BX,ADDR2
MOV AH,0AAH ; 向设定的位置写入0AAH
CALL BYTE_WRITE
NOP ; 运行到这一行,观察附加段ADDR2数据
MOV BX,ADDR2
MOV DL,ES:[BX] ; 读数据2
NOP ; 运行到这一行,观察DL数据
MOV AL,DL
MOV DX,D273 ; 并行输出口地址
OUT DX,AL ; 输出数据2
NOP ; 运行到这一行,LED显示数据2
JMP $
;**********************************************************************************
; 芯片擦除
CHIP_ERASE proc near
push bx
push dx
CE_START:
MOV AX,5000H
MOV ES,AX
MOV BX,5555H
MOV DL,0AAH
MOV ES:[BX],DL ;5555H/AAH
MOV BX,2AAAH
MOV DL,55H
MOV ES:[BX],DL ;2AAAH/55H
MOV BX,5555H
MOV DL,80H
MOV ES:[BX],DL ;5555H/80H
MOV BX,5555H
MOV DL,0AAH
MOV ES:[BX],DL ;555H/AAH
MOV BX,2AAAH
MOV DL,55H
MOV ES:[BX],DL ;2AAAH/55H
MOV BX,5555H
MOV DL,10H
MOV ES:[BX],DL ;5555H/10H
CE_WAIT:
MOV AL,ES:[BX]
TEST AL,80H
JNZ CE_OK
TEST AL,20H
JZ CE_WAIT ;等待擦除完成
MOV AL,ES:[BX]
TEST AL,80H
JNZ CE_OK
MOV DL,0F0H ;擦除不成功,复位
MOV ES:[BX],DL
JMP CE_START ;重试
CE_OK:
NOP
POP DX
POP BX
RET
CHIP_ERASE ENDP
;**********************************************************************************
BYTE_WRITE PROC NEAR;处理字节写入前的命令序列
PUSH BX
PUSH AX
MOV AX,5000H
MOV ES,AX
MOV BX,5555H
MOV DL,0AAH
MOV ES:[BX],DL ;5555H/AAH
MOV BX,2AAAH
MOV DL,55H
MOV ES:[BX],DL ;2AAAH/55H
MOV BX,5555H
MOV DL,0A0H
MOV ES:[BX],DL ;5555H/A0H
POP AX
POP BX
MOV DL,AH
MOV ES:[BX],DL ;向设定的位置写入AH
NOP
RET
BYTE_WRITE ENDP
;***************************************************************************************
DELAY PROC NEAR
PUSH CX
MOV CX,0F000H
DL: LOOP DL
POP CX
RET
DELAY ENDP
CODE ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -