?? 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 + -