admin 管理员组

文章数量: 887021


2024年1月25日发(作者:网站网页设计工作内容)

实验项目名称 表格查找

实验类型 □验证性 □设计性 □综合性 实验时间 2014年10月 20 日

一、实验目的及要求

1.

1熟悉循环程序和分支程序设计方法;

2. 了解与键盘输入有关的DOS 21H功能调用;

3. 了解DOS显示功能调用。

二、实验内容及过程(主要内容、操作步骤或程序代码)

仓库管理中,总共存有有关库存品的编号、名称、数量、价格等情况的表格,根据用户提供的编者按号可以找到有关材料。假设表格中共有6种库存品,表格的格式为:

stoktab db '05',' Excavators'

db '08',' Lifters'

db '09',' Presses'

db '12',' Valves'

db '23',' Processors'

db '27',' Pumps'

试编写一程序,根据用户提供的编号在终端上显示其名称。

根据题目的要求,程序可由三部分组成:

1. 输入:接受用户键入的库存品号;

2. 查表:根据给定编号在表格中查找所要求的库存品名称;

3. 输出:显示找到的库存品名称。

其中,第二部分是程序的主体,可以使用循环结构。由于在给定的表格中,编号及库存品所占的字节数都是相等的,因此在查找的时候,只要根据编号的地址就可以逐项查找。循环结束条件应该是找到用户所指定的项时就可以退出,但还必须考虑在表格中没有找到所需编号的特殊情况。

要求:

如用户给出的编号可以在表格中查到,则显示出相应的库存品名;

如用户不需要再查找,只要按一下“回车”可结束程序;

若表格中无用户给出的编号,则显示:“Not in table!”,然后结束程序。

data segment

mess1 db 'stock number?',13,10,'$'

stoknin label byte

max db 3

act db ?

stokn db 3 dup(?)

stoktab db '05',' Excavators'

db '08',' Lifters'

db '09',' Presses'

db '12',' Valves'

db '23',' Processors'

db '27',' Pumps'

descrn db 14 dup(20h),13,10,'$'

mess db 'Not in table!',13,10,'$'

data ends

code segment

assume cs:code, ds:data, es:data

main proc far

push ds

sub ax,ax

push ax

mov ax, data

mov ds, ax

mov es, ax

start:

lea dx,mess1

mov ah,09

int 21h

lea dx,stoknin

mov ah,0ah

int 21h

cmp act,0

je exit

mov al,stokn

mov ah,stokn+1

mov cx,06

lea si,stoktab

a20:

cmp ax,word ptr[si]

je a30

add si,14

loop a20

lea dx,mess

mov ah,09

int 21h

jmp exit

a30:

mov cx,07

lea di,descrn

rep movsw

lea dx,descrn

mov ah,09

int 21h

jmp start

exit:

ret

main endp

code ends

end main

三、测试数据及实验结果

四、实验分析及总结

通过这次的实验,让我更熟悉了汇编语言。并且在程序的调试过程中,遇到了很多困难。这次试验让我初步了解DOS显示功能调用。这让我对调试程序也有了更深的体会。调试程序的时候一直出错,但是检查了很久都发现没有错误。最后还是一晃眼发现有几个字打错了。最后才把程序调试成功。而且在写程序的时候也遇到了很多疑惑,都是不停的翻书和询问同学才解决的这些问题。

这次的实验比上次试验难度有所加大。有的时候自己不太能理解代码里面的内容,所以以后要更加认真的学习。无论是实验课和理论课我都会全力以赴去学好它。

评价指标 等级

A

实验目的明确

操作步骤正确

设计符合要求

算法正确

界面美观

程序结构合理

实验结果正确

实验分析、总结全面

实验报告规范

成 绩

B

C

D

评阅教师签名:

年 月 日


本文标签: 程序 实验 表格 编号 用户