VC6汇编第三次上机实验

实验目标

1)从键盘接收多个有符号整数
2)对输入的多个整数进行排序
3)再次接收用户输入的一个整数,并在排序结果中查找;
4)以二进制编码输出下标。若未找到,则输出提示。


实验代码
TITLE Integer Summation Program  (Sum2.asm)

INCLUDE Irvine32.inc
INTEGER_COUNT = 5

.data
str1 BYTE "Enter a signed integer: ",0
str2 BYTE "The sum of the integers is ",0
str3 BYTE "The BubbleSort result is:",0
str4 BYTE "Please input the finding number:",0
str5 BYTE "找到了,二进制下标为:",0
str6 BYTE "没有找到该数字!!",0
array DWORD INTEGER_COUNT DUP(?)
ARRAY_SIZE = 20
Array1 DWORD ARRAY_SIZE DUP(?)

.code 
main PROC
	call Clrscr
	mov esi,OFFSET array
	mov ecx,INTEGER_COUNT
	call PromptForIntegers
    call BubbleSort
	call DisplayResult
	call InputFindNum
	call FindNum
	exit
main ENDP


;冒泡降序
BubbleSort proc   uses eax  ecx esi       ; esi指向要排序的双字数组,ecx为元素个数
Dec ecx
L1:push ecx
     push esi
L2:mov eax , [esi]
     cmp eax , [esi + 4]
     jg L3
     xchg eax , [esi+4]
     mov [esi] ,eax
L3:add esi ,4
     loop L2
     pop esi
     pop ecx
Loop L1
ret        
BubbleSort endp


;输入数字
PromptForIntegers PROC USES ecx edx esi
	mov edx,OFFSET str1

L1: call WriteString
	call ReadInt
	call Crlf
	mov [esi],eax
	add esi,TYPE DWORD
	loop L1
	ret

PromptForIntegers ENDP

;输入要查找的数字
InputFindNum PROC USES edx
	mov edx,OFFSET str4
	call WriteString
	call ReadInt
	call Crlf
	;输入之后,新的数字保存在EAX里面
	;call DumpRegs
	ret

InputFindNum ENDP


;查找数字 
FindNum PROC USES esi ecx edx ebx

L1:cmp eax,[esi]
   je Feng1
   add esi,TYPE DWORD
   loop L1
   mov edx,OFFSET str6
   call WriteString
   ret

Feng1:mov edx,OFFSET str5
	  mov ebx,INTEGER_COUNT
	  sub ebx,ecx
	  mov eax,ebx
	  call WriteString
	  call WriteBin
	  call Crlf
	  ret

FindNum ENDP



;打印排序结果 
DisplayResult PROC USES edx ecx esi
	mov edx,OFFSET  str3
	call WriteString
	call Crlf
	mov eax,0

L1:mov eax,[esi]
	add esi,TYPE DWORD
	call WriteInt
	call Crlf
	Loop L1
	ret
DisplayResult ENDP

END main












  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值