关于汇编语言MOV A,23H

2019-07-15 11:35发布

本帖最后由 懒惰的魔方 于 2017-3-25 16:37 编辑

看到别人写的汇编如下,注释是我以自己的理解添加的:
  1. MOV A,23H        ;23H内存单元内的值给A
  2. MOV R0,A                ;A的值给R0
  3. MOV A,@R0        ;R0值表示地址,它指向的值给A
  4. MOV 19H,A        ;A的值保存到19H内存单元
  5. MOV A,#0F7H        ;0xf7给A
  6. MOV @R0,A        ;A给R0指向的地址
复制代码
我换成C是这样的:
A = *((unsigned char *)0x23);
*((unsigned char *)0x19) = *A;
*A = 0xf7;


想问问各位大人,我的理解以及伪C 写的是否正确?
用标准C该如何写呢?
如果换成您写,您会怎么写呢?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
人中狼
1楼-- · 2019-07-15 17:03
懒惰的魔方 发表于 2017-3-25 16:43
您好,问题刚刚更新一下。您再帮忙看看

你这是反汇编过来的代码吧,估计原代码也是C写的,其实这里23H里存的是一个变量的地址,19H本身就是一个变量,你定义两个对应的变量就可以了,假如23H指向的变量是first,19H为地址的变量是second,C应该可以写成second = first;
first = 0xf7;
好像是这样吧 最佳答案
人中狼
2楼-- · 2019-07-15 22:59
有什么问题,23H里存的是一个单元X的地址,把这个地址转存到R0,然后用R0指向X的地址来读取或写入X的地址,有点绕
懒惰的魔方
3楼-- · 2019-07-15 23:02
人中狼 发表于 2017-3-25 16:28
有什么问题,23H里存的是一个单元X的地址,把这个地址转存到R0,然后用R0指向X的地址来读取或写入X的地址,有点绕

您好,问题刚刚更新一下。您再帮忙看看

一周热门 更多>