- 打卡等级:以坛为家I
- 打卡总天数:217
- 最近打卡:2024-11-15 09:12:27
荣誉版主
- 积分
- 2790
|
发表于 2023-8-9 11:24:31
|
显示全部楼层
023/8/7 第8课时
数据传送类指令
相当于 =
对psw没用
MOV <目的字节>,<源字节>
MOV A, #data8 ;(A) <-- #data8
MOV addr8, #data8 ;(addr8) <-- #data8
MOV @Ri, #data8 ;((RI)) <-- #data8 注意2种寻址方式
MOV Rn, #data8 ;(Rn) <-- #data8
简单的汇编程序
在MAIN 种添加
MOV R0 #50H
MOV @R0 #56H
仿真
看内存内容 d:0
F11 单步运行
F10 可以跳过延时等子函数
LJMP MAIN 运行后 SP 变为07
继续F11 R0寄存器 被放入 0x50
F11 56 被放入 50H 内存中
添加MOV A,#98H 重新编译
sys中a 变成98h
添加MOV 20H,#56H
MOV P0 #75H
F11 看到 56H送入到内存20H中
F11 在parllel PORT 0 中看到 P0口变成了75H
测试一下这个仿真图片有没有上传成功
MOV A, addr8 ;(A)<--(addr8)
MOV A, @Ri
MOV A,Rn
MOV addr8,A
MOV @Ri, A
MOV Rn, A
注释就不抄了,就是把后面给前面 ,该怎么寻址怎么寻址
MOV R1 #82H
MOV A @R1
手动给82H RAM 赋值0x59
F11 测试失败
修改target 位8052
还是没变
仿真失败,等待硬件仿真测试
MOV addr8,addr8
MOV addr8,@Ri
MOV addr8,Rn
MOV @Ri,addr8
MOV Rn,addr8
RAM之间 不需要寄存器
MOV DPTR,#data16
断点 MOV DPTR #0126H
DPTR 由0000 变为0126
MOVX XRAM 用的
R1/R0 间接寻址
MOVX A,@Ri
MOVX @RI,A
DPTR 间接寻址
MOVX A,@DPTR
MOVX @DPTR,A
仿真 MOVX DPTR,#0100H
MOVX A,@DPTR
RAM X:0100H
赋值45
Sys a 中变为0x45
提到《数字系统设计》课程,后面找本书看看讲的啥
MOVC A,@A+PC
MOVC A,@A+DPTR
两条查表指令
PC 只能256范围 DPTR 用的多
查平方表子程序
PUSH 保护DPTR POP 恢复dptr
MOV 附表
MOVC 查表
调用子程序
LCALL GETSQ
MOV 50H, A
F11 看到a 里面 7
F11 a 里面 27
数据交换指令
字节交换指令
XCH A,addr8
XCH A,@Ri
XCH A,Rn
前后两个操作数互换
XCHD A,@Ri
连个操作数低4位交换,高4位不变,不影响标志位
堆栈
PUSH addr8
POP addr8
先进后出 SP指针控制
PUSH ACC
PUSH PSW
POP PSW
POP ACC
逻辑操作类指令
24条
ANL ORL XRL 常用双操作数
ANL (ORL,XRL) A,#data8 等
SWAP ASCII 与BCD 码切换
算数指令
ADD ADDC 加法指令 影响标志位
SUBB 带结尾减法指令 先 CLR C
MUL AB 乘法指令 >255 溢出
A*B = BA
INC C的++
DA A 二十进制转换
|
|