51单片机 汇编语言 常用数据处理程序设计 求16个无符号数的最大值
2.6求16个无符号数的最大值设计N(N<256)字节无符号16进制数求最大值子程序。在片内RAM从50H单元开始存放了16个无符号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
求助:
请尽可能详细地注明程序行,最好有该行程序的功能。
谢谢! 展开
设计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
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
意法半导体(中国)投资有限公司
2023-06-12 广告
2023-06-12 广告
单片机,即单片微控制器,也称为单片微型计算机,是将中央处理器(CPU)、存储器(ROM,RAM)、输入/输出接口和其他功能部件集成在一块 在一个小块的集成电路上,从而实现对整个电路或系统的数字式控制。单片机不是完成某一个逻辑功能的芯片,而是...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
展开全部
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
数数少了几行? 加了二句还少了三行
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
数数少了几行? 加了二句还少了三行
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
现在写还来得及吧?分少了……你回复我就给你写……
追问
写!
我回复了,你倒是写啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询