📄 aexp13.asm
字号:
;*-------------------------------------------------------*
;* Aexp13.asm 扩展存储器实验 *
;* Copyright (c) 2004 by HUST *
;* 运行步骤:1. 将平台板上存储器电源的跳接开关连上 *
;* 2. 源程序编译,连接,运行 *
;* 3. 运行后,在屏幕显示的结果中查看 *
;* BUF2中的内容是否和BUF1的内容一致 *
;*-------------------------------------------------------*
STACK1 SEGMENT STACK
DB 200 DUP(?)
STACK1 ENDS
DATA SEGMENT
prepare db 'please turn on the memory power or the programe will not run as you wish!$'
input db 0ah,0dh,'if you want to quit ,please press Q/q! '
db 0ah,0dh,'press other key to copy from buf1 to buf2',0ah,0dh,' $'
inputmess db 0ah,0dh,'please input buf1:',0ah,0dh,'$'
outputmess db 0ah,0dh,'already copy from BUF1 into BUF2 :'
CHGLINE0 DB 0AH,0DH,'BUF1:'
BUF1 DB 255 dup(0)
CHGLINE DB 0AH,0DH,'BUF2:'
BUF2 DB 255 DUP(?)
RAMBASE EQU 0E100H
buf db 255 ;字符缓冲区
db ?
db 255 dup(0)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK1
START:
MOV AX,DATA
MOV DS,AX
lea dx,prepare
mov ah,9
int 21h
l0: lea dx,input ;输入提示
mov ah,9
int 21h
mov ah,08h
int 21h
cmp al,'Q'
jE exit
cmp al,'q'
je exit
lea dx,inputmess
mov ah,9
int 21h
lea dx,buf
mov ah,10
int 21h
lea di,buf+2
lea si,buf1
mov cx,0
next: mov dl,[di]
inc di
cmp dl,0dh
jne aa
jmp end0
aa:
mov [si],dl
inc si
inc cx
jmp next
exit: MOV AH,4CH
INT 21H
end0: mov byte ptr [si],'$'
inc cx
mov bp ,cx
; WRITERAM ;写存储器6264RAM
PUSH SI
PUSH BX
PUSH CX
PUSH AX
MOV SI,OFFSET BUF1 ;主存BUF1的首址送入SI
MOV BX,RAMBASE ;6264RAM存储区基址送BX
MOV CX,bp ;字节个数送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,bp ;字节个数送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 SI
LEA DX,OUTPUTMESS
MOV AH,9
INT 21H
lea dx,chgline
mov ah,9
int 21h
jmp l0
CODE ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -