汇编语言实现整数冒泡排序
时间:2025-07-07
时间: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字,全部文档内容请下载后查看。喜欢就下载吧 ……
下一篇:第七届国际发明展览会 邀请函郑钢