求汇编语言大神帮忙编一个程序,这题很难,我先悬赏20,怕没有人回答,如果能答出来,我再附加100的财富
变量BUF中有10个字节型数值数据,把能被3整除的数保存到BUF1中,其他的保存到BUF2中,然后找出BUF1和BUF2中的最小值,分别保存到MIN1和MIN2中。要求:...
变量BUF中有10个字节型数值数据,把能被3整除的数保存到BUF1中,其他的保存到BUF2中,然后找出BUF1和BUF2中的最小值,分别保存到MIN1 和MIN2中。要求:求一个数组中最小值用子程序实现,主程序和子程序间参数传递使用寄存器,输入参数用SI(数组首地址),输出参数用AL(最小值)。
展开
2个回答
展开全部
这么复杂!
输入什么、输出什么,楼主给一个样例吧。
输入什么、输出什么,楼主给一个样例吧。
追问
输入1,2,3,4,5,6,7,8,9,10,程序把3,6,9存到BUF1,把1,2,4,5,7,8,存到BUF2,把3存到MIN1,把1存到MIN2
追答
ASSUME CS:CC, DS:QW
;---------------------------
QW SEGMENT
BUF DB 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
BUF1 DB 10 DUP (0)
BUF2 DB 10 DUP (0)
MIN1 DB 0
MIN2 DB 0
MSG9 DB 13, 10, 'Press any key to continue ... $'
CR_LF DB 13, 10, 36
QW ENDS
;---------------------------
CC SEGMENT
START:
MOV AX, QW
MOV DS, AX
MOV BX, 0
MOV SI, 0
MOV DI, 0
MOV CX, 10
LOP:
MOV AL, BUF[BX]
MOV AH, 0
MOV DL, 3
DIV DL
CMP AH, 0
JNZ N_DIV3
MOV AL, BUF[BX]
MOV BUF1[SI], AL
INC SI
JMP NEXT
N_DIV3:
MOV AL, BUF[BX]
MOV BUF2[DI], AL
INC DI
NEXT:
INC BX
LOOP LOP
;---------------------分离完毕
MOV CX, SI
LEA SI, BUF1
CALL F_MIN
MOV MIN1, AL
MOV CX, DI
LEA SI, BUF2
CALL F_MIN
MOV MIN2, AL
EXIT:
LEA DX, MSG9
MOV AH, 9
INT 21H
MOV AH, 7
INT 21H
MOV AX, 4C00H
INT 21H ;返回DOS
;-----------------------------
F_MIN:
MOV AL, 255
F_LP:
CMP AL, [SI]
JBE F_NEXT
MOV AL, [SI]
F_NEXT:
INC SI
LOOP F_LP
RET
;-----------------------------
CC ENDS
END START
;-----------------------------
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询