📄 exmem1.asm
字号:
;*-------------------------------------------------------*
;* ExMem1.asm 扩展存储器实验 *
;* Copyright (c) 2002 by HUST *
;* Modify Date 2005.4.10 *
;* 运行步骤:1. 将平台板上存储器电源的跳接开关联上 *
;* 2. 程序编译、连接后,进行调试 *
;* 3. 在主程MOV AH,4CH处设置断点,利用Add Watch *
;* 命令查看BUF2中的内容是否和BUF1的内容一致 *
;*------------------------------------------------------*
STACK1 SEGMENT STACK
DB 200 DUP(?)
STACK1 ENDS
DATA SEGMENT
BUF1 DB "hello world!"
N EQU $-BUF1
BUF2 DB N DUP(?)
RAMBASE EQU 0E100H
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK1
START:
MOV AX,DATA
MOV DS,AX
; WRITERAM ;写存储器6264RAM
PUSH SI
PUSH BX
PUSH CX
PUSH AX
MOV SI,OFFSET BUF1 ;主存BUF1的首址送入SI
MOV BX,RAMBASE ;6264RAM存储区基址送BX
MOV CX,N ;字节个数送CX
MOV DX,303H ;设置8255工作方式
MOV AL,80H ;10000000B
OUT DX,AL
L1:
MOV DX,302H ;从8255的C口
MOV AL,BH ;输出地址的高8位
OUT DX,AL
MOV DX,301H ;从8255的B口
MOV AL,BL ;输出地址的低8位
OUT DX,AL
MOV DX,303H ;置写信号为低电平
MOV AL,0EH ;00001110B(置PC7=0)
OUT DX,AL
MOV DX,300H ;从8255的A口
MOV AL,[SI] ;输出8位数据
OUT DX,AL
MOV DX,303H ;置写信号变为高电平
MOV AL,0FH ;00001111B(置PC7=1)
OUT DX,AL
INC SI ;主存地址加1
INC BX ;6264RAM地址加1
LOOP L1 ;未完,继续写
POP AX
POP CX
POP BX
POP SI
; READRAM ;读存储器6264RAM
PUSH SI
PUSH BX
PUSH CX
PUSH AX
MOV SI,OFFSET BUF2 ;主存BUF2的首址送SI
MOV BX,RAMBASE ;6264RAM存储区基址送BX
MOV CX,N ;字节个数送CX
MOV DX,303H ;设置8255工作方式
MOV AL,90H ;10010000B
OUT DX,AL
L2:
MOV DX,302H ;从8255的C口
MOV AL,BH ;输出地址的高8位
OUT DX,AL
MOV DX,301H ;从8255的B口
MOV AL,BL ;输出地址的低8位
OUT DX,AL
MOV DX,303H ;置读信号为低电平
MOV AL,0CH ;00001100B(置PC6=0)
OUT DX,AL
MOV DX,300H ;从8255A口读数据
IN AL,DX
MOV [SI],AL ;数据存到BUF2中。
MOV DX,303H ;置读信号变为高电平
MOV AL,0DH ;00001101B(置PC6=1)
OUT DX,AL
INC SI ;主存地址加1
INC BX ;6264RAM地址加1
LOOP L2 ;未完,继续读
POP AX
POP CX
POP BX
POP SIMOV AH
MOV AH,4CH ;程序退出
INT 21H
CODE ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -