汇编语言——100个数中的最大数
问题描述已知,从baffuer开始存放了100个带符号的字数据,试编写一完整的汇编语言程序,求出这100个数中的最大数,并将结果存放到MAX单元。
解决方案
DSEG SEGMENT
n EQU 100H
M DW n DUP (?)
DATA DW ? ;M+2n单元
ADDR DW ? ;M+2(n+1)单元
DSEG ENDS
CSEG SEGMENT
MAIN PROC FAR
ASSUME CS: CSEG, DS: DSEG
START: PUSH DS ;设置返回DOS
SUB AX, AX
PUSH AX
MOV AX, DSEG
MOV DS, AX ;给DS赋值
BEGIN: MOV CX, n ;循环计数器
LEA DI, M
MOV AX, ;取第一个数
MOV ADDR, DI ;记下绝对值最大的数的地址
CMP AX, 0 ;此数是正数吗?
JNS ZHEN ;是正数,即为绝对值,转去判断下一个数
NEG AX ;不是正数,变为其绝对值
ZHEN: MOV BX,
CMP BX, 0 ;此数是正数吗?
JNS COMP ;是正数,即为绝对值,转去比较绝对值大小
NEG BX ;不是正数,变为其绝对值
COMP: CMP AX, BX ;判断绝对值大小
JAE ADDRESS
MOV AX, BX ;(AX)<(BX),使(AX)中为绝对值最大的数
MOV ADDR, DI ;记下绝对值最大的数的地址
ADDRESS: ADD DI, 2
LOOP ZHEN
MOV DATA, AX ;记下此数
RET
MAIN ENDP
CSEG ENDS ;以上定义代码段
END START
页:
[1]