请各位单片机高手帮我做几道题,急啊!星期一就要教了。没交就要死了。
一,下列指令是否正确
1.MOVX B . 03H 2.MOV R3.@R 3.MOV (20H).(30H) 4.CLR 20H 5.CPL 20H 6.RL R0
7.XRL A ,@R3
二,将存放(连续存放)在内部RAM 20H单元开始的20个字节数据按升序排序。
三。如上题意(二)一样但改为降序排序
四。讲外部RAM 40H~60H单元中的数据传送到内部RAM的同地址区域,将原数据全部清零。
就这么多。高手麻烦帮忙给个答案,谢谢,感激!
我会做第四个,
org 0000h
ajmp main
org 0030h
main: MOV R0,#40H;记录片内的地址
MOV R3,#20H;记录要传送的数据个数
MOV DPTR,#0040H;记录片外地址
LOOP: MOVX A,@DPTR;开始传送
MOV @R0,A
MOV A,#00H;开始清0源数据
MOV @DPTR,A
INC R0
INC DPTR
DJNZ R3,LOOP;检查是否传送完
OVER: AJMP OVER; 踏步指令
我是学生,所以写的太死板了,请见谅
第二个稍微麻烦一点,改天替你解决啊,呵呵
org 0000h
ajmp main
org 0030h
main: mov r3,#19d;记录循环次数
start: mov r5,r3;设置比较次数
mov r2,#20h;设置起始地址
goon: mov a,@r2;a中放要比较的底地址数
inc r2
mov r0,@r2;r0中放要比较的高地址
cjnz: a,r0,loop;两数如果相等,跳到接着比较
ajmp next
loop: jc next ;r0大于a(即低地址放的是较小数,高低址放的是较大数,跳入记着比较)
xch a,r0
mov @r2,r0
dec r2
mov @r2,a
inc r2
next:djnz r5,goon;检查是否比较完了
djnz r3,start;检查是否完成可升学排列
over: ajmp over
其基本思想是冒泡法,先是挨个比较,比较一遍后就不最大的数放在了最高地址,然后再循环比较n-1(既第二次是比较19-1=18次)次,直到结束
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |