登录
首页 单片机论坛
回帖 发帖
正文

主题:我是初学的,写了两个程序段那位高手给我指点一下,谢谢!!!

点击:2460 回复:12

要求是(1)编写程序,进行两个16位数的减法:6FDH—13B4H。结果存至内部RAM的30H和31H,30H存差的低8位。
(2)将DPTR减1。
程序一:
MOV  DPTR  #6FDH;
MOV  10H    DPL;
MOV  11H    DPH;
MOV  DPTR  #13B4H;
MOV  20H    DPL;
MOV  21H    DPH;
MOV  A       11H;
CLR   C;
SUBB  A  21H;
MOV  31H  A;
MOV  A  10H;
CLR  C;
SUBB  A  20H;
MOV  30H  A;
另外我认为这个程序中的13B4H是不是也可以理解为负数,如果可以那位帮我看一下程序应该怎么改才好,小弟先谢谢了啊!!!
程序二:
CLR  C;
TABLE:  PUSH  DPH;
           PUSH  DPL;
           JC   TABLE1;
           POP    DPL;
           PUSH  DPL;
           POP    A;
           DEC   A;
           JC   TABLE;
           PUSH   A;
           POP   DPL;
           POP   DPH;
TABLE1:POP   DPL;
           POP   DPH;
           PUSH  DPH;
           POP   A;
           DEC   A;
           PUSH  A;
           POP   DPH;
           PUSH  DPH;
           PUSH  DPL;
           POP    A;
           ADD    A   #FFH;
           DEC    A;
           PUSH  A;
           POP    DPL;
           POP    DPH;
水平有限还请各位多多指点批评!!小弟先谢谢了!!!
06-02-07 13:50
还行,
06-02-07 16:35
不知道要用DPTR来绕一下干什么,你减错了,翻翻书,该先减低位,还有,要养成一个习惯,低位地址存数据的高位,不要问为什么,汇编的每一行要打标点吗?我没看到过。第二个就懒得看了。要编出一个能用的程序可能还得努力三个月,加油啊,兄弟:)
06-02-07 20:08
怎么不用高级语言写阿
06-02-07 21:59
你的意思是不是直接把16为数存在两个8位地址里,不用DPTR了!!
还有第二个,你有空就帮我看看谢谢了啊!!
多谢你的指点,我 水平很一般还请你多多指点啊,谢谢你了啊!!
我还有新写的程序段,有空了帮忙看看啊!小弟多谢了!!
06-02-08 11:37
你这样学单片机太累了,去找一个实际的产品(即能用的,包括硬件和软件),功能不是很复杂的,把产品的功能动作什么的弄透彻后再去看它的程序,试着对它的功能进行简单的修改,这样比较容易上手,不要老是在那翻什么资料啊什么的,看书是学不好的,大学里单片机考100分工作了可能写程序时第一句话就不知道怎么写:)
06-02-09 20:57
MOV A,#0FDH
CLR  C
SUBB A,#084H
MOV 30H,A
MOV A,#06H
SUBB A,#013H
MOV 31H,A
对了,你这不够减:)
06-02-09 21:31
第一行就不对了,那个#号后面除了H外应该是四位十六进制数吧
06-02-12 20:30
刚开始以为楼上的是在说我写错了,再一看应该不是的:)要是这个减法我都写错了,我们老板早都不知道把我给撂到多远了。刚才试了一下,楼主的第一句能通过编译,是正确的
06-02-12 20:48
这位前辈多谢你还帮我编译看了一下!!!我是很想学单片机,可是现在上班了,没什么太多的时间,你有什么好办法可以介绍给我可以不???小弟先谢谢了啊!!表情
06-02-13 17:18

上一页下一页

工控新闻

更多新闻资讯