Skip to content

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

Published: at 15:38

ToC

说明

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

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

分析

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

代码

1
;; INPUT RULE
2
;; 00 == ORDERED
3
;; 01 == UNORDERED
4
;; 10 == BYTE
5
;; 11 == STOP
6
7
SSEG SEGMENT STACK
8
DW 32 DUP(?)
9
SSEG ENDS
10
11
CODE SEGMENT
12
ASSUME CS:CODE
13
14
START PROC FAR
15
MOV AL, 1001000B ;; INIT 8255
16
MOV DX, 0614H
17
OUT DX, AL
18
19
MOV AX, 8000H ;; SET START OFFSET
20
MOV DS, AX
21
22
BEGIN_MAIN:
23
CALL FAR PTR READ_KEY
24
CMP BX, 11B
25
JE EXIT
26
CALL FAR PTR WRITE_TO
27
NOP ;; BREAK POINT HERE
28
JMP BEGIN_MAIN
29
30
EXIT:
31
MOV AX, 4C00H
32
INT 21H
33
START ENDP
34
35
READ_KEY PROC FAR
36
MOV DX, 0640H ;; READ FROM 8255
37
IN AL, DX
38
39
MOV BL, AL ;; SET BX
40
MOV BH, 00H
41
RET
42
READ_KEY ENDP
43
44
;;; PARAM: BX(MODE)
45
WRITE_TO PROC FAR
46
MOV SI, BX
47
AND SI, 1B ;; SI = BX & 1 (01 -> 1, 00/10 -> 0)
48
49
MOV AX, 0H
50
MOV CX, 10H
51
LO:
52
CMP BX, 10B
53
JE BM
54
55
;; NORMAL MODE
56
MOV [SI], AX
57
JMP POST
58
59
BM:;; BYTE MODE
60
MOV [SI], AL
61
MOV [SI+1], AH
62
63
POST:
64
INC AX
65
INC SI
66
INC SI
67
LOOP BM
68
69
RET
70
WRITE_TO ENDP
71
72
CODE ENDS
73
END START

连线图

结果

00:规则字

01:非规则字

10:字节

11:退出