汇编语言——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, [DI] ;取第一个数
MOV ADDR, DI ;记下绝对值最大的数的地址
CMP AX, 0 ;此数是正数吗?
JNS ZHEN ;是正数,即为绝对值,转去判断下一个数
NEG AX ;不是正数,变为其绝对值
ZHEN: MOV BX, [DI]
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

 

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 1024 设计师:上身试试 返回首页