汇编语言实现整数冒泡排序

时间:2025-07-07

本文为 汇编语言实现整数冒泡排序 内附截图 与大家分享

第三次实验报告

1. 实现正整数的冒泡排序,要求有输入与输出。

实验源程序

;LT413.ASM

.model small

.stack

.data

count = 10

array dw count dup(0)

wtemp dw ?

flg db 0

.code

.startup

movcx,count

movbx,offset array

againi: call read

mov [bx],ax

incbx

incbx

calldpcrlfi

loopagaini

;

;

movcx,count

dec cx

outlp:

mov flg,0

movdx,cx

movbx,offset array

inlp: mov ax,[bx]

cmp ax,[bx+2]

jna next

xchg ax,[bx+2]

mov flg,1

mov [bx],ax

next: incbx

incbx

本文为 汇编语言实现整数冒泡排序 内附截图 与大家分享

jnzinlp

cmp flg,0

jzfxw

loopoutlp

;

;

fxw:

movcx,count

movbx,offset array

againo: mov ax,[bx]

movwtemp,ax

call write

incbx

incbx

calldpcrlfo

loopagaino

.exit 0

read proc

pushbx

push cx

push dx

xorbx,bx

xorcx,cx

mov ah,1

int 21h

cmp al,'+'

jz read1

cmp al,'-'

jnz read2

mov cx,-1

read1: mov ah,1

int 21h

read2: cmp al,'0'

jb read3

cmp al,'9'

ja read3

sub al,30h

shl bx,1

movdx,bx

本文为 汇编语言实现整数冒泡排序 内附截图 与大家分享

shl bx,1

addbx,dx

;

mov ah,0

addbx,ax

jmp read1

read3: cmp cx,0

jz read4

negbx

read4: movax,bx

pop dx

pop cx

popbx

ret

read endp

dpcrlfi proc

push ax

push dx

mov ah,2

mov dl,0dh

int 21h

mov ah,2

mov dl,0ah

int 21h

pop dx

pop ax

ret

dpcrlfi endp

write proc

push ax

pushbx

push dx

movax,wtemp

testax,ax

jnz write1

mov dl,'0'

mov ah,2

int 21h

jmp write5

write1: jns write2

movbx,ax

mov dl,'-'

mov ah,2

本文为 汇编语言实现整数冒泡排序 内附截图 与大家分享

int 21h

movax,bx

neg ax

write2: mov bx,10

pushbx

write3: cmp ax,0

jz write4

subdx,dx

divbx

add dl,30h

push dx

jmp write3

write4: pop dx

cmp dl,10

je write5

mov ah,2

int 21h

jmp write4

write5: pop dx

popbx

pop ax

ret

write endp

dpcrlfo proc

push ax

push dx

mov ah,2

mov dl,0dh

int 21h

mov ah,2

mov dl,0ah

int 21h

pop dx

pop ax

ret

dpcrlfo endp

end

实验结果:

本文为 汇编语言实现整数冒泡排序 内附截图 与大家分享

2. 编制一个子程序把一个16位二进制数用十六进制的形式在屏幕上显示出来,分别运用

如下三种参数传递方式,并用一个主程序验证它

(1) 采用AX寄存器传递这个16位的二进制数

(2) 采用wordTEMP变量传递这个16为二进制数

(3) 采用堆栈方法传递这个16位二进制数

实验源程序:

.model small

.stack

.data

string1db 'Mean1 use register :','$'

string2db 'Mean2 use variable :','$'

string3db 'Mean3 use stack :','$'

string4db 0dh,0ah,'$'

mydatadw 1992h

wordTEMPdw ?

.code

.startup

;AX方式

movdx,offset string1;

mov ah,9;

int 21h;

movax,wordptrmydata;

call chan1;

;变量方式

push ax

movdx,offset string4;

mov ah,09h;

本文为 汇编语言实现整数冒泡排序 内附截图 与大家分享

int 21h;

movdx,offset string2; mov ah,09h;

int 21h;

pop ax

mov word ptrwordTEMP,ax; call chan2;

;栈方式

push ax

movdx,offset string4; mov ah,09h;

int 21h;

movdx,offset string3; mov ah,09h;

int 21h;

pop ax

push ax;

call chan3;

pop ax;

.exit 0

chan1 proc

push ax;

pushbx;

movbl,al;

moval,ah;

callALdisp;

moval,bl;

callALdisp;

popbx;

pop ax;

ret

chan1 endp

chan2 proc;wordTEMP传递 push ax;

pushbx;

movbl,al;

moval,ah;

callALdisp;

moval,bl;

callALdisp;

本文为 汇编语言实现整数冒泡排序 内附截图 与大家分享

pop ax; ret

chan2 endp

chan3 proc;栈传递 pushbp; movbp,sp; push ax; pushbx;

mov ax,[bp+4]; movbl,al; moval,ah; callALdisp; moval,bl; callALdisp; popbx; pop ax; popbp; ret

chan3 endp

ALdisp proc push ax push cx push dx push ax movdl,al mov cl,4 shrdl,cl or dl,30h cmp dl,39h jbe aldisp1 add dl,7

aldisp1: mov ah,2 int 21h pop dx and dl,0fh or dl,30h cmp dl,39h jbe aldisp2 add dl,7

aldisp2: mov ah,2 int 21h

本文为 汇编语言实现整数冒泡排序 内附截图 与大家分享

pop cx pop ax ret

ALdisp endp end

实验结果:

…… 此处隐藏:1119字,全部文档内容请下载后查看。喜欢就下载吧 ……
汇编语言实现整数冒泡排序.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:29元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219