搞到晚上4点还没有搞定的汇编指令
本帖最后由 GZLJZ 于 2012-4-21 04:42 编辑下面代码是成功的:
BUF DATA 70H
MOV A,#100
MOV BUF+2,A
即将数值100存入72H寄存器里
------------------------------------------------------------------------------------------------
而我想把上面固定数值2变为变量,确不行请高手帮忙,谢了
我设想的程序如下:是不能达到,将数值100存入72H寄存器里
N DATA 30H
BUF DATA 70H
MOV N,#2
MOV A,#100
MOV BUF+N,A
或者还有什么方法同样达到我的要求呀
楼主也是夜猫子呢。 guowei681 发表于 2012-4-21 04:30 static/image/common/back.gif
楼主也是夜猫子呢。
是呀,在想上面问题,不知怎样才能达到我要的要求 汇编我帮不了你哦。看你的逻辑是对的呀
guowei681 发表于 2012-4-21 04:35 static/image/common/back.gif
汇编我帮不了你哦。看你的逻辑是对的呀
经测试确实是不行的
加的地址不是2,而是N的地址数值了 程序菜菜鸟呢,用到是51么。?改换C呢,MOV N,#2常数2放到N这个寄存器中。N 是啥?在寄存器中有么有定义冲突的。
MOV A,#100
MOV BUF+N,A
本帖最后由 GZLJZ 于 2012-4-21 04:54 编辑
guowei681 发表于 2012-4-21 04:47 static/image/common/back.gif
程序菜菜鸟呢,用到是51么。?改换C呢,MOV N,#2常数2放到N这个寄存器中。N 是啥?在寄存器中有么 ...
是51的,N是随便命名的寄存器名称,N即等于30H寄存器 你看下手册,换一个命名看下,是不是N和内部寄存器冲突,这个可能性比较大,本人程序很菜,能帮到你的也很有限,忘见谅先休息吧,朋友。
guowei681 发表于 2012-4-21 04:53 static/image/common/back.gif
你看下手册,换一个命名看下,是不是N和内部寄存器冲突,这个可能性比较大,本人程序很菜,能帮到你的也很 ...
呵呵,谢了,也该休息了,不然天都快亮了 n data 30h
buf data 70h
loop:
mov n,#2
mov a,#buf
add a,n
mov r0,a
mov a,#100
mov @r0,a
ljmp loop
end BUF DATA 70H
N DATA 30H
即 BUF = 70H
N = 30H
当执行
MOV BUF+N,A
是将A中的值传送到地址为A0H的寄存器中,即送到端口 P2 10楼正确,变址访问,只能通过@R0 guowei681 发表于 2012-4-21 04:30 static/image/common/back.gif
楼主也是夜猫子呢。
好像搞这个的都有熬夜的习惯,对汇编就爱莫能助了,不过已经有人解决了,在这里也学习了. 本帖最后由 GZLJZ 于 2012-4-21 12:40 编辑
刚醒来,谢谢各位,
10楼代码等会我试下,谢谢,(刚试了,确实是好办法,谢了,我用了这么久汇编,还不知ADD可以加地址的,以前以为加的是数值,哦关键mov a,#buf这句 把buf的地址赋值给了A)
11楼也是对的,结果确实是BUF+的是N的地址,而不是N里面的数值,所以昨晚试验了很久。 所有的CPU都不能直接加变量,如果要通过变址寻址,就必须得通过寄存器间接访问或专用指令。 没听说什么72寄存器的!
N EQU 20H
BUF EQU 21H
MOV A,N
ADD A,BUF
MOV R0,A
MOV @R0,#100D
SJMP $ 上面n与buf对应了一个内存单元,不是常量。也可以直接对应常量。还是先看看51指令集比较好!不然提问题都困难! 为什么手机看不到有些楼的发言 MOV BUF+2,A,这个指令中的+是预编译时就算好的,所以只能是常数。如果其中一个是变量,就里要用汇编指令运算了,比如10楼的方法。 记号 MARK 汇编指令怎么可能有直接在语句中运算加法的啊? 听说4点最容易猝死 什么单片机的汇编 用@R或者dptr+A指令可以实现 lxa0 发表于 2016-12-18 16:01
用@R或者dptr+A指令可以实现
僵尸贴都花出来?
@R指向RAM,
DPTR指向XDATA(MOVX)或ROM (MOVC) 本人也玩汇编的,想找工作,有没有人收留啊 diyplayer 发表于 2016-12-18 23:28
本人也玩汇编的,想找工作,有没有人收留啊
我也玩汇编的
不过找工作的事帮不上你
抱歉 呵呵,4年前的事了,现在已全部使用C语言了,当前使用汇编那个累呀。
页:
[1]