单片机内RAM从LIST开始有30个无符号数,编程找出最大数存入BIG

希望 能写一个完整的程序,谢谢 我是刚刚开始学的 所以不知道怎么写 谢谢指教?

已经完全通过调试的程序设计,你只需要修改起始地址,数据个数和最大数地址,就能实现你的要求,,,但是这里需要注意我这里设置了“栈地址”,你在修改上面的上面的地址,尽量不要设置在“栈地址”之后(当然你也可以重新设置“栈地址”来安排一些内存布局),,,另外我这个程序是在你老师反对的情况下发布的,请LZ以30分的悬赏分来作为个人一定的补偿。
程序如下:
LIST EQU 30H ;假设比较的数据从30H地址处开始
TOTAL EQU 10 ;数据总数
BIG EQU 5FH ;最大数据地址

ORG 0000H
AJMP MAIN
ORG 0040H
MAIN:
// MOV 30H,#2
// MOV 31H,#1
// MOV 32H,#0
// MOV 33H,#7
// MOV 34H,#4
// MOV 35H,#9
// MOV 36H,#13
// MOV 37H,#23
// MOV 38H,#34
// MOV 39H,#56
//上面我仅做调试使用

MOV SP,#60H
ACALL Find_Max ;函数调用,你要求的功能就是由我这个自定义函数完成
SJMP $ ;函数完成后可以做其他任何处理,我这里暂时不做其他处理

Find_Max:
PUSH PSW
MOV R2,#(TOTAL-1) ;R2存放比较次数
MOV R0,#LIST
MOV BIG,@R0 ;赋初值
MOV R0,#BIG ;R0指向BIG
MOV R1,#(LIST+1) ;R1指向比较数据
LOOP:
MOV A,@R0 ;A作为暂存比较器
CLR CY
SUBB A,@R1
JC SAVE_BIGGER
AJMP SAVE_END
SAVE_BIGGER:
MOV BIG,@R1
SAVE_END:
INC R1
DJNZ R2, LOOP ;循环
POP PSW
RET

END
温馨提示:内容为网友见解,仅供参考
无其他回答

单片机内RAM从LIST开始有30个无符号数,编程找出最大数存入BIG
LIST EQU 30H ;假设比较的数据从30H地址处开始 TOTAL EQU 10 ;数据总数 BIG EQU 5FH ;最大数据地址 ORG 0000H AJMP MAIN ORG 0040H MAIN:\/\/ MOV 30H,#2 \/\/ MOV 31H,#1 \/\/ MOV 32H,#0 \/\/ MOV 33H,#7 \/\/ MOV 34H,#4 \/\/ MOV 35H,#9 \/\/ MOV 36H,#13 \/\/ MOV 37H,#23...

单片机编程问题 在内部RAM单元30H--3FH中无序存放着无符号正数,找出最...
LOOP2:MOV R0,30H MOV A,@R0 INC R0 MOV 60H,@R0 CLR C CJNE A,60H,LOOP LOOP:JC QD MOV 20H,60H QD:MOV 20H,A DJNZ #16H,LOOP2

求单片机编程找最大数
程序如下:MOV R0,#21H  ;起始地址.MOV MAX,#0   ;先用0当做最大值 MOV R2,#20H  ;数据长度 LOOP:MOV A,@R0;取来一个数据 CLR C SUBB A,MAX;减“最大值”JC rel1 ;不够减就算了 MOV A,@R0;够减,就把这个数据 MOV MAX,A;当做最大值 rel1:INC R0 ;转向下一...

单片机编程题,用汇编语言 找出片内30H~3FH中的最大值
BIG:MOV B, #0 ;先用0充当最大值 MOV R0, #30H LOOP:MOV A, @R0 ;取来一个数字 CLR C SUBB A, B ;减去最大值 JC NEXT ;不够减转移 MOV B, @R0 ;够减了,就把它当成最大值 NEXT:INC R0 ;转到下一个 CJNE R0, #40H, LOOP ...

...51单片机内部RAM中30H单元开始的30个无符号数据的最小值,结果放在2...
ORG 0000H LJMP MAIN ORG 0030H MAIN:MOV R0,#30H MOV R2,#30 MOV 2FH,#0FFH LOOP:MOV A,@R0 CJNE A,2FH,LOOP1 LOOP1:JNC LOOP2 MOV 2FH,A LOOP2:INC R0 DJNZ R2,LOOP SJMP END

单片机编程:8个无符号数的平均值
ADD A,R2 RL A SWAP A MOV R2,A ;SJMP END --- 内部RAMLIST单元开始存有组单字节带符号数数据长度30要求找出大数存入BIG单元 程序下:MOV BIG,0 MOV R0,LIST MOV R2,30 CHA:MOV A,R0 CJNE A,BIG,QQQ QQQ:JC WWW MOV BIG,A WWW:INC R0 DJNZ R2,...

...RAM 30H单元开始存放着10个无符号数 编写程序找出其中的最大值送入...
LOOP1:INC R0 ;修改地址指针,使其指向下一地址单元 MOV 30H,@R0 ;将比较的数暂存于30h CJNE A,30H,CHK ;两个数比较 CHK:JNC LOOP2 ;如果A大,则转换 MOV A,@R0 ;如果A小,则将较大的数存入A LOOP2:DJNZ R1,LOOP1 ;R1减1,如果其不为0,则继续循...

编写能从内部RAM的BLOCK为起始地址的100个无符号数中找出最小值,并把...
FIND_MIN:MOV R0,#BLOCK MOV R2,#99 MOV A,@R0 INC R0 LOOP:CJNE A,@R0,DD1 SJMP DD2 DD1:JC DD2 MOV A,@R0 DD2:INC R0 DJNZ R2,LOOP MOV MIN,A RET

单片机设计程序,找出30H~39H中的10个无符号数的最大值和最小值,将最...
用循环判断就可以找找出来 unsigned char minDat,maxDat;minDat=第一个值;maxDat=第一个值 for(i=1;i<10;i++){ 数值=下一个值 if(minDat>数值){ minDat=数值;} if(maxDat<数值){ maxDat=数值;} }

...30H~3F单元中存放了16个无符号数,编程找出最大值,放在40H单元中_百度...
;CLR A MOV R0, #30H MOV R2, #16 L1: CJNE @R0, A, L2 JMP NEXT L2: JC NEXT MOV A, @R0 NEXT: INC R0 DJNZ R2, L1 MOV 40H, A END

相似回答