当前位置: 代码迷 >> 汇编语言 >> 求解.该如何解决
  详细解决方案

求解.该如何解决

热度:5637   发布时间:2013-02-26 00:00:00.0
求解...
NAME SEARCH_MAX
DATA SEGMENT
BUFFER DW X1,X2,…,Xn
COUNT EQU $-BUFFER
MAX DW
DATA ENDS
STACK SEGMENT PAPA STACK'STACK'
  DB 64 DUP(?)
TOP EQU $STACK
STACK ENDS
CODE SEGMENT
START PROC FAR
  ASSUME CS:CODE,DS:DATA,SS:STACK
BEGIN: PUSH DS
  MOV AX,0
  PUSH AX
  MOV AX,DATA
  MOV DS,AX
  MOV AX,STACK
  MOV SS,AX
  MOV AX,TOP
  MOV SP,AX
  MOV CX,COUNT
  LEA BX,BUFFER
  MOV AX,[BX]
  INC BX
  DEC CX
AGAIN: CMP AX,[BX]
  JGE NEXT
  MOV AX,[BX]
NEXT: INC BX
  LOOP AGAIN
START ENDP
CODE ENDS
  END BEGIN

------解决方案--------------------------------------------------------
探讨

引用:

囧....代码是书上的...书上说是个循环神马的...但没看懂...

噢,上面说错了,应该是把buffer后面的找最小的放到ax……

------解决方案--------------------------------------------------------
AGAIN: CMP AX,[BX]
JGE NEXT
MOV AX,[BX]
NEXT: INC BX
LOOP AGAIN
主要就是这一段,使用的是冒泡法求最大值[BX]对应的是buffer中数据的地址(上面一大串也就是为了这个,以及保护现场)
最后buffer中的最大值存在AX中
  相关解决方案