当前位置:编程学习 > 汇编语言 >>

51单片机 汇编语言 常用数据处理程序设计 求16个无符号数的最大值

2.6 求16个无符号数的最大值 设计N(N<256)字节无符号16进制数求最大值子程序。 在片内RAM从50H单元开始存放了16个无符号16进制数,调用子程序寻找最大值,将最大值存于B寄存器。 在主程序中使R0指向片内30H单元后,调用子程序。 程序: ORG 0H MOV R0,#30H ACALL ZI SJMP $ ZI: MOV R7,#15 MOV A,@R0 LOOP: MOV R1,A INC R0 MOV A,@R0 CJNE A,01H,BIG1;R1=01H MOV B,A AJMP Xun_Huan BIG1: JC BIG2 MOV B,A AJMP Xun_Huan BIG2: MOV A,R1 MOV B,A Xun_Huan: DJNZ R7,LOOP RET END 求助: 请尽可能详细地注明程序行,最好有该行程序的功能。 谢谢!
追问:写!
我回复了,你倒是写啊
答案:查找最大值的程序,不是很简单的吗?
如下即可:

    ORG   0H
    MOV   R0, #30H
    ACALL ZI
    SJMP  $
;-----------------------------------
ZI:
    MOV  B,  #0     ;先用0当做最大值.
    MOV  R7, #16    ;比较16次.
LOOP: MOV  A, @R0   ;取来一个数字.
    CJNE A, B, B1   ;比较.
B1: JC   B2         ;有借位转移.
    MOV  B,  A      ;够减则存到B中.
B2: INC  R0         ;转到下一个.
    DJNZ R7, LOOP   ;循环16遍.
    RET
;-----------------------------------
    END
其他:现在写还来得及吧?分少了……你回复我就给你写…… ORG    0H
			MOV    R0,#30H  ;这可能错了,该项是50H才对吧,这是放数的起始地址
			ACALL  ZI
			SJMP   $
ZI:                                           MOV    R7,#15  ;这是要比的数的个数
			MOV    A,@R0 ;取数
LOOP:		               MOV    R1,A  ;暂存
			INC    R0  ;为取下个数准备
			MOV    A,@R0 ;取数
			CJNE   A,01H,BIG1;R1=01H  ;不相等转
			MOV    B,A    ;相等暂存,好象是多余的
			AJMP   Xun_Huan
BIG1:                                       JC     BIG2 ;从C进位位判CJNE不同时谁大
			MOV    B,A  ;如果A大于的R1中的数保存A
			AJMP   Xun_Huan
BIG2:                                        MOV    A,R1  ;当A小时保存B
			MOV    B,A    ;;当A小时保存B
Xun_Huan:                               DJNZ   R7,LOOP ;检查数取完没
			RET
			END

我帮你改一下吧
	                  ORG    0H
                            AJMP   IN                          让开中断入口区
                                    ORG    30H
IN:			MOV    R0,#50H  ;这是放数的起始地址
			ACALL  ZI
			SJMP   $
ZI:                                           MOV    R7,#15  ;这是要比的数的个数
			MOV    A,@R0 ;取数
		         MOV   B,A  ;暂存第一个数到B中
LOOP:			INC    R0  ;为取下个数准备
			MOV    A,@R0 ;取数
			CJNE   A,B,BIG1  ;R1=01H  ;不相等转
BIG1:                                      JC     Xun_Huan ;从C进位位判CJNE不同时谁大
			MOV   B,A  ;如果A大于B中的数保存到B
Xun_Huan:                               DJNZ   R7,LOOP ;检查数取完没
			RET
			END
数数少了几行? 加了二句还少了三行

上一个:求汇编语言高手来回答
下一个:把使用汇编语言编写的程序翻译为目标代码的程序叫做什么?

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,