利用汇编语言编写求10个无符号数的大小

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

利用汇编语言编写求10个无符号数的大小

一、要求:

已知在DATA开始的字单元中存放有10个无符号整数,试编制程序挑选出其中的最大数并存放到MAXV单元中,挑选出最小数并存放到MINV单元中。

二算法分析

1、求最大值:10个数据存储在限制为10个数据的数组中,BX中存储数组,将首地址数据赋值给AX,随后完成指针后移同时数据循环与AX比较,如果AX<[BX],那么 AX赋值给BX,否则指针后移,直到指针指到数组末尾时循环结束,最后将AX赋值给MAXV,然后调用DOS 输出数据。

2求最小值:将首地址数据赋值给AX,随后完成指针后移同时数据循环与AX比较,如果AX>[BX],那么 AX赋值给BX,否则指针后移,直到指针指到数组末尾时循环结束,将AX赋值给MAXV,然后调用DOS 输出数据。

三扩展应用

顾名思义,此程序的设计是为了在无序的一组数据中挑选出其最值。在实际中,这样的要应用许许多多,这样,我们可以把这个算法付诸实践,丰富我们的乐趣,使我们的程序设计从理论上升到实践,从而能力得到质的飞跃。

设想,再一次歌手比赛中,评委打完分后,计分原则是去头和尾,此时,本程序可以迅速查找到其最高分以及最低分,并删除之,这是一个很好的应用。

再看看我们的学校,每年必不可少的就是考试了,为了各项评比,我们需要选出最高分,无论怎么评比,只要设置一个关键字,定义其属性就可以得到最优秀的,这一应用节省了我们的时间,对比过去利用“穷举”的查找法,这无疑是质的飞跃啊!

在软件中,可以用这种算法来实现数据、字符等的寻优操作。

总之,只要没有到共产主义社会,就会就会存在竞争,就存在优胜劣汰,从而少不了的就是选择更优秀,淘汰垃圾,那么查找最优或者最差的算法就不会淘汰。

四程图分析设计:

程序分为查找、排序的主程序,以及它所要调用的循环程序,程序中包含有延时子程序,主程序为循环结构,以便循环比较,查找到最值。

查找最值程序中,可以按分如下结构化算法去编辑程序:

(查找MAXV)

(查找MINV)

五结束语

附录a:(源代码)

;..........................数据段 .......................... data segment

ary db 30,16,8,-1,13,49,7,11,4,20 ;数组个数

count db 10 ;数组元素个数

max db ?

min db ?

address dw 4dup(?) ;地址表缓冲区

data ends

stack segment para stack 'stack'

db 256dup(?)

stack ends

code segment

assume cs:code,ds:data ;..........................代码段 ..........................

start:

mov ax,data

mov ds,ax

mov address, offset ary;

mov address+2, offset count

mov address+4, offset max

mov address+6, offset min

lea bx,address ;地址表首地址送入寄存器BX call search ;搜索最大值及最小值

mov al,max

call outdata ;显示最大值

call crlf ;回车换行

mov al,min

call outdata ;显示最小值

mov ah,4ch ;返回DOS

int 21h

search proc

push bx ;现场保护

push cx

push dx

push bp

push si

push di

mov bp,[bx+2] ;数组长度单元地址送入BP

mov cx,ds:[bp] ;数组长度—》CX

dec cx

mov si,[bx+4]

mov di,[bx+6]

mov bp,[bx]

mov dl,ds:[bp]

mov [si],dl

mov [di],dl

inc bp

lop:

mov dl,ds:[bp]

cmp dl,[si]

je next

mov [si],dl

jmp next minc:

cmp dl,[di]

jge next

mov [di],dl next:

inc bp

loop lop

pop di

pop si

pop bp

pop dx

pop cx

pop bx

ret

search endp outdata proc near

push ax

push bx

push cx

push dx

mov bl,al

mov cl,4

shr al,cl

or al,30h

cmp al,3ah

jb outh

add al,07h outh:

mov dl,al

mov ah,02h

int 21h

mov dl ,bl

and dl,ofh

or dl,30h

cmp dl,3ah

jb outl

add dl,07h outl:

mov ah,02h

int 21h

mov dl,'h'

相关文档
最新文档