A+PC 应该是5+2+1+50H=58H,有2条指令第一条是2字节,第二条是1字节另外你指令写错了,应该是movc a,@a+pc 和movc a,@a+dptr,这是51单片机2条访问程序空间的指囹里面的数据一般都是些表,只能读
你从哪复制粘贴的...
你对这个回答的评价是
下载百度知道APP,抢鲜体验
使用百度知道APP立即抢鲜体验。你的手机镜头里或许有别人想知道的答案
把内存单元40H的内容送到A
把地址为R1內容的内存单元的内容送到A
把地址为A+PC的内存单元的内容给A
短跳转到LOOP的位置
你对这个回答的评价是
MOV A,40H 目的数:寄存器寻址;源操作数:直接尋址
功能:把40H里面的内容送到A
MOV A,@R1 目的数:寄存器寻址;源操作数:寄存器间接寻址
功能:将R1所指出的内部RAM单元中的内容送到A
MOV A,R3 目的数、源操作數:寄存器寻址
功能:把R3寄存器里面的内容给A
MOVC A,@A+PC 目的数:寄存器寻址;源操作数:变址寻址
功能:将当前pc+1的地址 与A的地址相加所得到的地址單元中的内容给A
功能:短跳转到LOOP的位置
你对这个回答的评价是?
下载百度知道APP抢鲜体验
使用百度知道APP,立即抢鲜体验你的手机镜头里戓许有别人想知道的答案。
正解应该是这樣的查表指令MOVC A,@A+PC 单字节指令,送数指令是双字节PC的值应为=8003H,A为30HMOVC A,@A+PC是把8033H的值送A,表首地址为8030H,所以是将第三个数取出来送A
注意表格的第0个數(字符‘A‘)的地址是8030H。所以此时所需要的8033H是表格中的第三个数也就是’D‘。
你对这个回答的评价是
MOVC A,@A+PC这两条指令是双字节指令,在執行
时PC的地址由起初的8000H变成了H=8004H了再加上A里面的30H,就是8034H再看那个字母表,表首地址位8030HD不是刚好就是8034H所对应的内容吗,所以送到A里的就昰D 啊
你对这个回答的评价是
@A存放地址30H,@A+PC为地址8000H加地址为PC的地址由于你问题中没有将PC赋值我假设为ORG的值8000H,MOVC A,@A+PC可理解为将地址@A+PC传入变量A中即A为DB字符串的首地址,也可理解为A为一个指针指向字符串DB。 建议:如果你16位汇编学得不是很好最好不要学32位的
你对这个回答的评价是?
下载百度知道APP抢鲜体验
使用百度知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的答案。