📄 memory01.asm
字号:
***********************
*date 07-9-20
*purpose
*1)掌握各种寻址方式
*2)程序的写法
*3) dp的意义的再次理解
*4)各种指令的理解
*************mmregs 的意义*********
*汇编语言程序中的公用变量应在文件中定义,
*如.def carry。汇编语言程序中使用的局部变量不需要定义,
*可直接声明,例如trn_ num.word 00h。如果在两个asm文件中
*有两个都没有定义的同名变量,则编译程序会认为他们不是同
*一变量。在汇编程序的开头应有 .mmregs宏语句。它一方面表示
*对默认定义的确认(ah,bh,trn等),另一方面可以对所用寄存器
*重新定义。如:
*.mmregs
*DMPREC .set 54h ;定义DMA优先和使能寄存器地址在54h
*DMSA .set 55h
*DMSDN .set 57h
*DXR10 .set 23h ;定义串口1的发送寄存器地址在23h
*************mmregs 的意义*********
*auhtor xcs
**********************
.title "memory01.asm" ;ver 01
.global start ; 定义全局标号
.mmregs
.text
start:
nop
ld #4,dp ; 直接寻址,装载DP值,页指针指向片内数据区DARAM B0
st #1,1 ; 绝对地址201H开始的四个单元存1,2,3,4
st #2,2 ;
st #3,3 ;
st #4,4 ;
stm #205h,ar1 ; 间接寻址,使用辅助寄存器1
rpt #3 ; 循环重复执行下条语句4次
st #1234h,*ar1+ ; 将绝对地址205H开始的4个单元存成1234H
; 下面将201H开始的8个数读出存到2000H开始的8个单元
stm #7h,ar3 ; 循环计数器=7(8次循环)
stm #201h,ar1 ; 源起始地址
stm #2000h,ar2 ; 目的起始地址
loop:
ld *ar1+,T ; 将ar1指向单元内容读入T寄存器,ar1的值+1
st T,*ar2+ ; 将T寄存器的值转存到ar2指向的目的地址,ar2的值+1
banz loop,*ar3- ; ar3的值-1,循环计数不等于0则循环
xh:
b xh ; 空循环
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -