FZU汇编上机实验(三) 循环程序设计

1、上机题目:数据查找  内容:TAB开始的字节单元中存放N个无符号数,dat单元存放一个已知数据X,现从TAB中查找是否存在数据X,如果存在,NO单元存放该数据在TAB中的序号,否则NO单元存放0FFH 。

TAB byte   X1,……,XN  

dat   byte   x            

no    byte   ?

要求:熟练掌握循环程序设计方法

include Irvine32.inc
.data
	tab   dword   1,2,5,9,10
    dat   dword  2
    no    dword   ?
.code
main proc
	mov edx,0
	mov ebx,0
	mov ecx,lengthof tab
	mov eax,dat
again: mov no,edx
	   cmp eax,[tab+ebx*4]
	   je ext2
	   inc edx
	   add ebx,1
	   loop again
ext1:   mov no,0ffh
ext2:   mov eax, no
		call writeint
exit
main endp
end main

 2. 上机题目:无符号数排序    内容:TAB开始的单元中存放N(N>1)个字节无符号数,请按照从大到小排序后,存入DAT单元中。(注意:TAB数据保持不变)  

 TAB  byte   X1,……,XN(数据自己设定)  

 DAT  byte   N DUP(?)

要求:熟练掌握循环程序设计方法 

以下用的是冒泡排序法类比C++

include Irvine32.inc
.data
tab dword +10,+3,+5,+6,+9
dat dword 5 dup(?)
n dword 5
.code
main proc
	mov ecx,5
	mov edx,0
	mov esi,0
	
i1:	mov eax,[tab+4*esi]
	mov [dat+4*esi],eax
	inc esi
	loop i1
	mov ecx,-1
	;以上没毛病
i2:	inc ecx		;i++
	mov edx,-1	;j=0
	mov ebx,offset dat
	dec n		;n-i-1
	cmp ecx,5	;i<5
	jl j2		;跳转到j
	jmp sc1		;否则跳到输出准备
j2:	
	inc edx		;j++
	cmp edx,n	;j<n
	jl swap		;跳到交换判断
	jmp i2		;否则回到i2
swap:	
		mov eax,[ebx];eax=dat[j]
		cmp eax,[ebx+4];dat[j]>dat[j+1]
		jg guodu		;则直接到过度不交换
		mov esi,[ebx+4]
		mov [ebx+4],eax
		mov [ebx],esi
		jmp guodu
guodu:	add ebx,4
		jmp j2
	;以下没毛病
sc1:	mov esi,0
		mov ecx,5
sc:		mov eax,[dat+4*esi]
		call writeint
		inc esi
		loop sc
exit
main endp 
end main 

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值