Skip to content

[微机实验/TD-PITE] 存储器扩展实验+选做实验

Published: at 15:38

ToC

说明

按照要求,需要根据开关确定写入 SRAM 的方式。00 为规则字、01 为非规则字、10 为字节,11 为退出。

SRAM 空间从 8000:0000H 开始,通过 D8000:0000 查看内存空间。

分析

通过 8255 连接开关,并从 K1K0 读入数据到寄存器。

代码

;; INPUT RULE
;; 00 == ORDERED
;; 01 == UNORDERED
;; 10 == BYTE
;; 11 == STOP
SSEG SEGMENT STACK
DW 32 DUP(?)
SSEG ENDS
CODE SEGMENT
ASSUME CS:CODE
START PROC FAR
MOV AL, 1001000B ;; INIT 8255
MOV DX, 0614H
OUT DX, AL
MOV AX, 8000H ;; SET START OFFSET
MOV DS, AX
BEGIN_MAIN:
CALL FAR PTR READ_KEY
CMP BX, 11B
JE EXIT
CALL FAR PTR WRITE_TO
NOP ;; BREAK POINT HERE
JMP BEGIN_MAIN
EXIT:
MOV AX, 4C00H
INT 21H
START ENDP
READ_KEY PROC FAR
MOV DX, 0640H ;; READ FROM 8255
IN AL, DX
MOV BL, AL ;; SET BX
MOV BH, 00H
RET
READ_KEY ENDP
;;; PARAM: BX(MODE)
WRITE_TO PROC FAR
MOV SI, BX
AND SI, 1B ;; SI = BX & 1 (01 -> 1, 00/10 -> 0)
MOV AX, 0H
MOV CX, 10H
LO:
CMP BX, 10B
JE BM
;; NORMAL MODE
MOV [SI], AX
JMP POST
BM:;; BYTE MODE
MOV [SI], AL
MOV [SI+1], AH
POST:
INC AX
INC SI
INC SI
LOOP BM
RET
WRITE_TO ENDP
CODE ENDS
END START

连线图

结果

00:规则字

01:非规则字

10:字节

11:退出


Previous Post
新版 GCC 针对 -fdump-translation-unit 的替代方案
Next Post
IFTTT 测试