ToC
说明
按照要求,需要根据开关确定写入 SRAM
的方式。00
为规则字、01
为非规则字、10
为字节,11
为退出。
SRAM
空间从 8000:0000H
开始,通过 D8000:0000
查看内存空间。
分析
通过 8255
连接开关,并从 K1K0
读入数据到寄存器。
代码
1;; INPUT RULE2;; 00 == ORDERED3;; 01 == UNORDERED4;; 10 == BYTE5;; 11 == STOP6
7SSEG SEGMENT STACK8 DW 32 DUP(?)9SSEG ENDS10
11CODE SEGMENT12ASSUME CS:CODE13
14START PROC FAR15 MOV AL, 1001000B ;; INIT 825516 MOV DX, 0614H17 OUT DX, AL18
19 MOV AX, 8000H ;; SET START OFFSET20 MOV DS, AX21
22BEGIN_MAIN:23 CALL FAR PTR READ_KEY24 CMP BX, 11B25 JE EXIT26 CALL FAR PTR WRITE_TO27 NOP ;; BREAK POINT HERE28 JMP BEGIN_MAIN29
30EXIT:31 MOV AX, 4C00H32 INT 21H33START ENDP34
35READ_KEY PROC FAR36 MOV DX, 0640H ;; READ FROM 825537 IN AL, DX38
39 MOV BL, AL ;; SET BX40 MOV BH, 00H41 RET42READ_KEY ENDP43
44;;; PARAM: BX(MODE)45WRITE_TO PROC FAR46 MOV SI, BX47 AND SI, 1B ;; SI = BX & 1 (01 -> 1, 00/10 -> 0)48
49 MOV AX, 0H50 MOV CX, 10H51LO:52 CMP BX, 10B53 JE BM54
55 ;; NORMAL MODE56 MOV [SI], AX57 JMP POST58
59BM:;; BYTE MODE60 MOV [SI], AL61 MOV [SI+1], AH62
63POST:64 INC AX65 INC SI66 INC SI67 LOOP BM68
69 RET70WRITE_TO ENDP71
72CODE ENDS73END START