51单片机的编写程序问题(答得又快又好追加100分)

来源:百度知道 编辑:UC知道 时间:2024/07/05 23:50:42
1. 试编写程序,完成X=Y+Z和X=Y-Z功能.其中Y=24608,Z=13579.

2. 试编写程序,完成X=-YZ和X=-Y/Z功能.其中Y=246.80,Z=135.79.

3.在BUF为首地址的片外RAM存放一个以FFH为结束符的数组.以下程序将该数组的存放区域清零,保留结束符FFH,请补全此程序.
MOV DPTR,#BUF
LOOP:
MOVX A,@DPTR

...
...

INC DPTR
SJMP LOOP
SJMP $
前2个搞完了....还得靠自己...谁把最后一个解决了吧

1、;赋值
MOV 0x08,#0x60
MOV 0x09,#0x20 ;24608
MOV 0x0A,#0x35
MOV 0x0B,#0x0b ;13579
{
MOV A,0x09
ADD A,0x0B
MOV 0x0D,A
MOV A,0x08
ADDC A,0x0A
MOV 0x0C,A ;x=y+z 0x0c高位,0x0d低位
}
{
CLR C
MOV A,0x09
SUBB A,0x0B
MOV 0x0D,A
MOV A,0x08
SUBB A,0x0A
MOV 0x0C,A ;x=y-z
}

3.
MOV DPTR,#BUF
LOOP:
MOVX A,@DPTR
{
CJNE A,#0xFF,clrbuf
SJMP $
clrbuf:
CLR A
MOVX @DPTR,A
}
INC DPTR
SJMP LOOP
SJMP $

第二个问题要浮点运算库很麻烦!
兄弟看看是不是这样!

用汇编写这样的程序你的挑战不小,建议下经过验证的子程序。不想浪费脑细胞写这样的程序,给你个建议吧:用C语言写。真的不难学!刚开始如果不放心,你可以看看生成的汇编代码。可以用用Keil,很好找的。不过用C语言一定要注意数据类型。第一个程序建议用长整形;第二个程序用浮点、双精度、或者先人为放大100(128)倍;第三个程序用C就更直观了,你用的也是数组这个词。至于是片内还是片外的RAM,我记得用修饰符就可以解决(很久以前用C语言做打印机驱动时用的,记不清楚了),而且不需要考虑用哪条指令的问题。

3.在BUF为首地址的片外RAM存放一个以FFH为结束符的数组.以下程序将该数组的存放区域清零,保留结束符FFH,请补全此程序.