编写程序,将内部RAM30H-40H单元共32个有符号数最大者找出,存入50H单元。
答案:2 悬赏:80 手机版
解决时间 2021-11-23 04:48
- 提问者网友:皆是孤独
- 2021-11-22 13:14
编写程序,将内部RAM30H-40H单元共32个有符号数最大者找出,存入50H单元。
最佳答案
- 五星知识达人网友:梦中风几里
- 2021-11-22 14:09
NUMBERS DATA 30H
RESULT DATA 50H
COUNT EQU 32
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
MOV RESULT, #0FFH
; MOV RESULT, #080H;test
MOV R0, #NUMBERS
MOV R5, #COUNT ;
;mov 30h,#0fbh ;-5 test
;mov 31h,#0fCh ;-4 test
NEXT:
MOV A, RESULT
JB ACC.7,RN;判断RESULT是否为负数,
RP:;RESULT正数
MOV A, @R0
JB ACC.7,RPNN;判断是否为负数,
RPNP:;正数
CLR C
MOV A, RESULT
SUBB A, @R0
JNC NOEXCH; 若C不等于1,则A大,不需要交换
JMP EXCH;C=1,说明A小,需要交换值,使result为大
RPNN:;负数
JMP NOEXCH
RN:;RESULT负数
MOV A, @R0 ;
JNB ACC.7,RPNP;判断是否为正数,
JNB ACC.7,RNNP;判断是否为正数,;【修改】
RNNN:;负数
MOV A, RESULT
CLR C
SUBB A, @R0
JNC NOEXCH
; JC NOEXCH ;【修改】
RNNP:;【新增】
JMP EXCH
EXCH: MOV RESULT, @R0
NOEXCH:
INC R0
DJNZ R5, NEXT
SJMP $
END老师写错了。
RESULT DATA 50H
COUNT EQU 32
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
MOV RESULT, #0FFH
; MOV RESULT, #080H;test
MOV R0, #NUMBERS
MOV R5, #COUNT ;
;mov 30h,#0fbh ;-5 test
;mov 31h,#0fCh ;-4 test
NEXT:
MOV A, RESULT
JB ACC.7,RN;判断RESULT是否为负数,
RP:;RESULT正数
MOV A, @R0
JB ACC.7,RPNN;判断是否为负数,
RPNP:;正数
CLR C
MOV A, RESULT
SUBB A, @R0
JNC NOEXCH; 若C不等于1,则A大,不需要交换
JMP EXCH;C=1,说明A小,需要交换值,使result为大
RPNN:;负数
JMP NOEXCH
RN:;RESULT负数
MOV A, @R0 ;
JNB ACC.7,RPNP;判断是否为正数,
JNB ACC.7,RNNP;判断是否为正数,;【修改】
RNNN:;负数
MOV A, RESULT
CLR C
SUBB A, @R0
JNC NOEXCH
; JC NOEXCH ;【修改】
RNNP:;【新增】
JMP EXCH
EXCH: MOV RESULT, @R0
NOEXCH:
INC R0
DJNZ R5, NEXT
SJMP $
END老师写错了。
全部回答
- 1楼网友:蓝房子
- 2021-11-22 14:14
程序,其实,写得很罗嗦。
他是把正数和正数相减,判断一下大小;
负数和负数相减,也判断一下大小。
其实,负数和负数相减后的判断,和正数相减的判断准则相同。
两个带负号的数,其形式是补码。
FFH,是-1,在负数中,它最大。
80H,是-128。它比 FF 小。
负数和负数相减后,CY=1,则说明,被减数较小。
减法程序,不用分开写两段。
另外,既然是求最大值,那么,开始时,在 RESULT 中,
应该先存放一个最小的数字,即-128。
他存放的是-1,这是错误的。
正确程序如下:
MAIN:MOV RESULT, #80H ;关键字,不应该是0FFH
MOV R0, #NUMBERS
MOV R5, #COUNT
NEXT:
MOV A, RESULT ;取关键字
JB ACC.7, RN ;是负数则转移
MOV A, @R0
JNB ACC.7, _SUB_ ;两个都是正数,转去相减
JMP NOEXCH ;是负数则不用更换
RN:
MOV A, @R0
JB ACC.7, _SUB_ ;两个都是负数,转去相减
JMP EXCH ;是正数则更换
_SUB_:
CLR C
MOV A, RESULT
SUBB A, @R0 ;都是正数或都是负数,相减
JNC NOEXCH ;够减就不更换
EXCH:
MOV RESULT, @R0
NOEXCH:
INC R0
DJNZ R5, NEXT
SJMP $
END
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯