完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
已知程序执行前有A=02H,SP=52H,(51H)=FFH,(52H)=FFH.下列程序执行后:
POP DPH ;SP=51H POP DPL ;SP=50H MOV DPTR,#4000H ;DPTR=#4000H RL A ;A=04H(02H*2) MOV B,A ;B=04H MOVC A,@A+DPTR ;查表A=30H //这里怎么得出A=30H? PUSH A ;SP=51H,(51H)=#30H //这里为什么SP=51H?然后(51H)=#30H又是怎么得出的? MOV A,B ;A=04H INC A ;A=05H MOVC A,@A+DPTR ;查表A=50H PUSH A ;SP=52H,(52H)=#50H RET ORG 4000H DB 10H,80H,30H,50H,30H,50H |
|
相关推荐
1 个讨论
|
|
这就是个查表并把查得数据进行压栈的程序。
ORG 4000H是定义的伪指令,定义了存放表中数据的首地址在4000H,由于数据类型是DB即只占用了一个字节,所以储存单元及其内容是4000H存放数据10H,4001H存放80H……4004H存放30H,4005H存放50H。该伪指令使得编译时地址分配按照以上实现。起初两次弹栈后SP=50H,50H是指堆栈地址。 第一次MOVC A,@A+DPTR,MOVC是个查表指令,它实现把A+DPTR地址所指的数据查找到并赋给累加器A,由于A=04H,此时A+DPTR=4004H,对应数据30H。 PUSH A则把累加器A中的数据进行压栈,由于SP=50H,故30H被存在压栈寄存器50H所指地址上,即(50H)=30H。该指令执行完后,SP会自动+1,改为指向地址51H。 |
|
|
|
|
|
690 浏览 0 评论
735 浏览 1 评论
基于瑞萨FPB-RA4E2智能床头灯项目——1编译环境搭建与点亮驱动ws2812全彩LED
624 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
1099 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第二章 常用的C语言知识点
1092 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11797 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-26 19:11 , Processed in 1.579140 second(s), Total 43, Slave 34 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号