实验四排序和检索程序设计报告_第1页
实验四排序和检索程序设计报告_第2页
实验四排序和检索程序设计报告_第3页
实验四排序和检索程序设计报告_第4页
实验四排序和检索程序设计报告_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验4 排序和检索程序设计一实验目的:(1)掌握常用的输入输出系统功能调用。(2)学习逻辑运算指令的用法。 (3) 掌握排序和检索程序的设计使用方法。二实验内容: 编写程序1:将内存中10个无符号数(长度为2字节)由小到大排序。编写程序2:在上述已排好序的数据区里查找某一个数。若找到,显示其在数据区中 的位置,否则显示N字符。编写主程序,通过调用程序1和程序2,实现排序和检索。1、编译: c:masm .asm2、链接: c:link .obj3、调试: c:debug .exe4、运行: c: .exe(1)1、编译: C:masm 4-1.asmC:masmmasm 4-1Microsof

2、t (R) Macro Assembler Version 5.00Copyright (C) Microsoft Corp 1981-1985, 1987. All rights reserved.Object filename 4-1.OBJ:Source listing NUL.LST:Cross-reference NUL.CRF:4-1.ASM(25): warning A4031: Operand types must match4-1.ASM(80): warning A4031: Operand types must match4-1.ASM(84): warning A403

3、1: Operand types must match 50158 + Bytes symbol space free 3 Warning Errors 0 Severe Errors2、链接: c:link 4-1.objC:masmlink 4-1Microsoft (R) Overlay Linker Version 3.65Copyright (C) Microsoft Corp 1983-1988. All rights reserved.Run File 4-1.EXE:List File NUL.MAP:Libraries .LIB:3、调试: c:debug 4-1.exe1)

4、、先用命令U反汇编整个程序,查看每条指令的物理地址,其显示内容的含义为:内存地址 指令代码 反汇编的程序代码C:masmdebug 4-1.exe-u1434:0000 B83114 MOV AX,1431数据段的首地址是:1431代码段的首地址是:14341434:0003 8ED8 MOV DS,AX1434:0005 8D1E0000 LEA BX,00001434:0009 B90A00 MOV CX,000A1434:000C E82800 CALL 00371434:000F BA1400 MOV DX,00141434:0012 B409 MOV AH,091434:0014 C

5、D21 INT 211434:0016 B401 MOV AH,011434:0018 CD21 INT 211434:001A 240F AND AL,0F1434:001C A22300 MOV 0023,AL1434:001F B220 MOV DL,202)、从上一步结果中找到数据段的首地址142E,查看里面存储的数据,数据段从首地址1431中存储了:2,4,1,8,3,6,10,7,13,11 input the key:$-d 1431:00001431:0000 02 00 04 00 01 00 08 00-03 00 06 00 0A 00 07 00 .1431:0010

6、0D 00 0B 00 69 6E 70 75-74 20 74 68 65 20 6B 65 .input the ke1431:0020 79 3A 24 05 00 00 00 00-00 00 00 00 00 00 00 00 y:$.1431:0030 B8 31 14 8E D8 8D 1E 00-00 B9 0A 00 E8 28 00 BA .1.(.1431:0040 14 00 B4 09 CD 21 B4 01-CD 21 24 0F A2 23 00 B2 .!.!$.#.1431:0050 20 B4 02 CD 21 8B 1E 00-00 B9 0A 00 8B

7、 16 23 00 .!.#.1431:0060 E8 28 00 B4 4C CD 21 50-33 C0 49 51 BB 00 00 8B .(.L.!P3.IQ.1431:0070 87 00 00 3B 87 02 00 76-08 87 87 02 00 89 87 00 .;.v.-.-3)、从反汇编地址中找到把数据段的首地址142E传给寄存器AX的指令地址:0005,用G命令执行到地址0005 ,然后用T命令单步执行,看寄存器AX,DS,ES的内容的变化-g0005AX=1431 BX=0000 CX=00F1 DX=0000 SP=0028 BP=0000 SI=0000 D

8、I=0000DS=1431 ES=141E SS=142E CS=1434 IP=0005 NV UP EI PL NZ NA PO NC1434:0005 8D1E0000 LEA BX,0000 DS:0000=0002-tAX=1431 BX=0000 CX=00F1 DX=0000 SP=0028 BP=0000 SI=0000 DI=0000DS=1431 ES=141E SS=142E CS=1434 IP=0009 NV UP EI PL NZ NA PO NC1434:0009 B90A00 MOV CX,000A-tAX=1431 BX=0000 CX=000A DX=000

9、0 SP=0028 BP=0000 SI=0000 DI=0000DS=1431 ES=141E SS=142E CS=1434 IP=000C NV UP EI PL NZ NA PO NC1434:000C E82800 CALL 0037-tAX=1431 BX=0000 CX=000A DX=0000 SP=0026 BP=0000 SI=0000 DI=0000DS=1431 ES=141E SS=142E CS=1434 IP=0037 NV UP EI PL NZ NA PO NC1434:0037 50 PUSH AX-tAX=1431 BX=0000 CX=000A DX=0

10、000 SP=0024 BP=0000 SI=0000 DI=0000DS=1431 ES=141E SS=142E CS=1434 IP=0038 NV UP EI PL NZ NA PO NC1434:0038 33C0 XOR AX,AX-tAX=0000 BX=0000 CX=000A DX=0000 SP=0024 BP=0000 SI=0000 DI=0000DS=1431 ES=141E SS=142E CS=1434 IP=003A NV UP EI PL ZR NA PE NC1434:003A 49 DEC CX-tAX=0000 BX=0000 CX=0009 DX=00

11、00 SP=0024 BP=0000 SI=0000 DI=0000DS=1431 ES=141E SS=142E CS=1434 IP=003B NV UP EI PL NZ NA PE NC1434:003B 51 PUSH CX-tAX=0000 BX=0000 CX=0009 DX=0000 SP=0022 BP=0000 SI=0000 DI=0000DS=1431 ES=141E SS=142E CS=1434 IP=003C NV UP EI PL NZ NA PE NC1434:003C BB0000 MOV BX,0000-tAX=0000 BX=0000 CX=0009 D

12、X=0000 SP=0022 BP=0000 SI=0000 DI=0000DS=1431 ES=141E SS=142E CS=1434 IP=003F NV UP EI PL NZ NA PE NC1434:003F 8B MOV AX,BX+0000 DS:0000=0002-tAX=0002 BX=0000 CX=0009 DX=0000 SP=0022 BP=0000 SI=0000 DI=0000DS=1431 ES=141E SS=142E CS=1434 IP=0043 NV UP EI PL NZ NA PE NC1434:0043 3B CMP AX,BX+0002 DS:

13、0002=0004-tAX=0002 BX=0000 CX=0009 DX=0000 SP=0022 BP=0000 SI=0000 DI=0000DS=1431 ES=141E SS=142E CS=1434 IP=0047 NV UP EI NG NZ AC PO CY1434:0047 7608 JBE 0051-4)然后直接G命令运行完毕。-ginput the key:3 4 输入关键字KEY:3,输出关键字的位置:4Program terminated normally4、运行 4-1.exe,完全执行程序,最后再查看数据段最后的结果:-d 1431:00001431:0000 0

14、1 00 02 00 03 00 04 00-06 00 07 00 08 00 0A 00 .1431:0010 0B 00 0D 00 69 6E 70 75-74 20 74 68 65 20 6B 65 .input the ke1431:0020 79 3A 24 03 00 04 00 00-00 00 00 00 00 00 00 00 y:$.1431:0030 B8 31 14 8E D8 8D 1E 00-00 B9 0A 00 E8 28 00 BA .1.(.1431:0040 14 00 B4 09 CD 21 B4 01-CD 21 24 0F A2 23 00 B

15、2 .!.!$.#.1431:0050 20 B4 02 CD 21 8B 1E 00-00 B9 0A 00 8B 16 23 00 .!.#.1431:0060 E8 28 00 B4 4C CD 21 50-33 C0 49 51 BB 00 00 8B .(.L.!P3.IQ.1431:0070 87 00 00 3B 87 02 00 76-08 87 87 02 00 89 87 00 .;.v.-Q三实验代码:1)2)STACK SEGMENT STACK S DB 40 DUP(0)STACK ENDSDATA SEGMENT ARY DW 2,4,1,8,3,6,10,7,1

16、3,11 N EQU ($-ARY)/2 input DB input the key:$ KEY DW 5 RESULT DW ?DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOV AX,DATA MOV DS,AX LEA BX,ARY ;取数组首地址 MOV CX,N CALL ARYSORT ;调用排序子程序 MOV DX,OFFSET INPUT MOV AH,9 INT 21H MOV AH,1 ;使用1号功能键,输入关键字 INT 21H AND AL,0FH MOV KEY,AL ;(第25行) MOV

17、DL,20H ;输出一个换行符 MOV AH,2 INT 21H MOV BX,ARY MOV CX,N MOV DX,KEY CALL ARYFIND ;调用查找子程序 MOV AH,4CH INT 21H ;子程序名:ARYSORT ;功能:从小到大排序字型10个元素的数组 ;入口参数:BX=数组地址;CX=数组元素个数;DX=要查找的关键字 ;出口参数:无ARYSORT PROC NEAR PUSH AX XOR AX,AX DEC CXLOOP1:PUSH CX MOV BX,0LOOP2:MOV AX,ARYBX CMP AX,ARYBX+2 JBE OK XCHG AX,ARYBX+2 MOV ARYBX,AXOK: ADD BX,2 LOOP LOOP2 POP CX LOOP LOOP1 POP AX RETARYSORT ENDP ;子程序名:ARYFOUND ;功能:从排好序的数组中查找某一个数。若找到,显示其在数据区中的位置,否则显示N字符 ;入口参数:BX=数组地址;CX=数组元素个数;DX=要查找的关键字 ;出口参数:无ARYFIND PROC NEAR PUSH AX XOR AX,AX MOV BX,0AGAI

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论