一个汇编小程序,望大虾指点
toann 2004-11-02 11:28:56 题目:定义数据段DATA_SEG,他把整数5赋给第一个字节,并把整数-1,0,2,5,4放在10字数组
DATA_LIST头5个字单元中。写出完整的代码段,其功能为:把DATA_LIST中头5个数中的最
大值和最小值分别存入MAX和MIN单元中。
我的思路是:把DATA_LIST的第一个数,也就是-1分别送给MAX和MIN,然后从第二个数据开始循环比较
如果MAX < DATA_LIST[SI]就把DATA_LIST[SI] -> MAX;如果MIN > DATA_LIST[SI]就把
DATA_LIST[SI] -> MIN,这样循环结束后,MAX中就为最大值,MIN中就为最
小值。不知是否可行?
问题:1、如何在屏幕输出MAX和MIN
2、现在的程序没有屏幕输出,怎样查看MAX和MIN的值?
我的程序如下,我现在不知道结果是否正确,希望大虾能帮忙看看:
;*****************DataSegment****************
DATA_SEG SEGMENT
First DB 5
DATA_LIST DW -1, 0, 2, 5, 4, 5 DUP(?) ; use 5 DUP(?) because 10 word array
MAX DW ?
MIN DW ?
DATA_SEG ENDS
;*****************CodeSegment****************
CODE SEGMENT
MAIN PROC FAR
ASSUME CS:CODE, DS:DATA_SEG
START:
MOV AX, DATA_SEG ; initialization DS segment
MOV DS, AX
MOV SI, 0 ; initialization array pointer
MOV CX, 5 ; initialization count
MOV AX, DATA_LIST[SI] ; First number of array -> MAX
MOV MAX, AX
MOV AX, DATA_LIST[SI] ; First number of array -> MIN
MOV MIN, AX
COMPARE: INC SI ; or ADD SI, 2
INC SI
MOV AX, DATA_LIST[SI]
CMP MAX, AX
JL LESS ; if MAX < DATA_LIST[SI] then DATA_LIST[SI] -> MAX
L: CMP MIN, AX
JG BIG ; if MIN > DATA_LIST[SI] then DATA_LIST[SI] -> MIN
B: LOOP COMPARE
JMP OVER
LESS: MOV MAX, AX
JMP L
BIG: MOV MIN, AX
JMP B
OVER: MOV AX, 4C00H ; Return DOS
INT 21H
CODE ENDS
END START