汇编实验(8086)——RAM扩展实验

1.RAM扩展实验

 

;16位内存扩展实验

;实验连线:

; 存储器扩展单元 CS0 ------- 控制总线 BLE

; 存储器扩展单元 CS1 ------- 控制总线 BHE

; 存储器扩展单元 MEWR ------ 控制总线 MEW

; 存储器扩展单元 MERD ------ 控制总线 MER

; 存储器扩展单元 D7~D0 ----- 数据总线 D7~D0

; 存储器扩展单元 D15~D8 ---- 数据总线 D15~D8

; 存储器扩展单元 A7~A0 ----- 地址总线 A7~A0

; 存储器扩展单元 A15~A8 ---- 地址总线 A15~A8

;程序功能:

;内存单元2000~20FFh填写指定的数据

 

code    segment

        assume cs:code

 

START   PROC NEAR

        mov bx,2000h    ;存储器起始地址

        mov cx,128      ;2000H~20FFH共128个字节

 

WRLOOP: mov [bx],55AAh  ;将数据55AAh写入存储器2000H单元

        add bx,2        ;地址+2

        loop WRLOOP     ;地址不到20FF则继续

 

        MOV AH,4CH

        INT 21H         ;退出

 

START   ENDP

code    ends

        end Start

 

2.RAM扩展实验(将数据从2000H~20FFH移动到1000~10FFH)

 

;16位内存扩展实验

;实验连线:

; 存储器扩展单元 CS0 ------- 控制总线 BLE

; 存储器扩展单元 CS1 ------- 控制总线 BHE

; 存储器扩展单元 MEWR ------ 控制总线 MEW

; 存储器扩展单元 MERD ------ 控制总线 MER

; 存储器扩展单元 D7~D0 ----- 数据总线 D7~D0

; 存储器扩展单元 D15~D8 ---- 数据总线 D15~D8

; 存储器扩展单元 A7~A0 ----- 地址总线 A7~A0

; 存储器扩展单元 A15~A8 ---- 地址总线 A15~A8

;程序功能:

;内存单元2000~20FFh填写指定的数据

 

code    segment

        assume cs:code

 

START   PROC NEAR

        mov bx,2000h    ;存储器起始地址

        mov cx,128      ; 2000H~20FFH共128个字节

 

WRLOOP: mov [bx],55AAh  ; 将数据55AAh写入存储器2000H单元

        add bx,2        ;地址+2

        loop WRLOOP     ;地址不到20FF则继续

 

;将数据从2000H~20FFH移动到1000H~10FFH

              mov di , 1000H   ;目的地址1000H~10FFH

              mov si , 2000H   ;源地址2000H~20FFH

              mov cx , 128     ;共128个字节

              cld             ;DF=0,地址增量修改

              rep movsb     ;串操作指令

 

        MOV AH,4CH

        INT 21H         ;退出

 

START   ENDP

code    ends

        end Start

3.指令讲解

A:CLD指令功能:将标志寄存器的方向标志位DF置0,在字符串操作中使SI或DI的地址指针自动增加,字符串处理由前往后。

B:MOVSB指令功能:字符串传送指令,这条指令按照字节传送数据。例如:DS:SI这段地址的N个字节复制到ES:DI指向的地址,复制后DS:SI的内容保持不变。

猜你喜欢

转载自blog.csdn.net/Qinlong_Stm32/article/details/84501692