实验十一综合程序设计.doc_第1页
实验十一综合程序设计.doc_第2页
实验十一综合程序设计.doc_第3页
实验十一综合程序设计.doc_第4页
实验十一综合程序设计.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

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

文档简介

实验十一 综合程序设计一、实验目的:巩固循环,分支,子程序等程序设计方法。全面了解汇编语言的程序设计和调试方法调试并查看.lst列表文件。二、实验内容:编写一个程序,接收从键盘输入的10个数字字符,输入回车符则停止输入,然后将这些数字加密后(用XLAT指令变换)存入内存缓冲区BUFFER。加密表为:输入数字:0,1,2,3,4,5,6,7,8,9密码数字:7,5,9,1,3,6,8,0,2,4 三实验设备:IBM PC机,DOS或WINDOWS, MASM5。0程序,LINK程序四实验原理:采用子程序结构完成数字的输入,并将其转换为二进制数,采用查表实现加密过程。程序主要部分如下: main Input outputdecibincrlfoutmessg 模块层次图inputmaininputoutput结束提示输入数字(outmess,crlf)初始化循环 计数器循环计数器+1 !=10接收一个数字字符(decibin)存入数组indata是数字?Crlf显示换行符显示回车还回是回车?显示出错(outmess,crlf)返回decibinYNoutput初始化数组初始化表值加密转换修改地址和计数器循环结束返回接收数字字符字符转换为二进制数值9?N正常返回1、过程名:main 为总控模块输入:用户从键盘输入10个十进制数字输出参数:将数字加密后保存到内存缓冲区BUFFER。功能:根据输入的数字和加密表完成数据加密。采用(XLAT指令变换)2、过程名:input 输入: 从键盘输入10个数字字符,以回车符结束。输出参数:把输入的数字字符转换成数值后存入indata数组中。功能:接受输入的十进制数字字符。调用子模块decibin把输入的数字字符转换为二进制数值。调用子模块crlf 完成回车换行功能。3、过程名:output输入参数:从indata数组中取得数值。输出参数:把数值加密后存到缓冲区BUFFER中功能:读取数字,完成加密转换,将结果保存到BUFFER中。4、过程名:decibin输入:从键盘取得一个数字字符。输出参数: SZBJ,表示用户输入的字符是否为数字;AL 把该数字字符转换为二进制数值放到ALDL,用户输入的字符ASCII码功能:把从键盘取得的一个十进制数转换为二进制数,并存于al中。5、过程名:crlf输出:向终端发出回车、换行符。功能:完成一次回车、换行操作。6、过程名:outmess输入参数:将字符串首地址放到DX中输出:完成字符串的屏幕显示。功能:实现提示信息的输出。五、实验过程1.编辑程序代码dataseg segment indata db 10 dup(?) array db 7,5,9,1,3,6,8,0,2,4 buffer db 10 dup(?) messg1 db Input number:,$ messg2 db program over normally!,$ messg3 db Input character error,please input again!,$ SZBJ db ?dataseg ends stackseg segment dw 100 dup (?) tos label wordstackseg endscodeseg segment main proc far assume cs:codeseg,ds:dataseg;,ss:stackseg start: push ds sub ax,ax push ax mov ax,dataseg ;设置DS指向dataseg 段 mov ds,ax mov ax,stackseg mov ss,ax mov sp,offset tos call input ; 调用子过程input call output ; 调用子过程output mov ax,4c00h int 21h main endp input proc near lea dx,messg1 ;输出提示信息 ; mov dx,offset messg1 call outmessg lea si,indata ; 置输入数据地址初值 mov cx,0enter: call decibin ; 调用子过程 cmp SZBJ,1 ; 确定是否输入有效数字 je store ; 有效数字保存 cmp dl,13 ;非有效数字时判定是否是回车符 je crect ;是回车符则退出 jne error ;既不是有效数字又不是回车符则报错store: mov si,al ; 将输入的数据送indata缓冲区 inc si ; 修改缓冲区地址 inc cx cmp cx,10 jne enter ; 是则转到提示信息 jmp crect ; 循环输入 error: call crlf ; 回车换行 lea dx,messg3 ; 以下为显示错误信息 call outmessg jmp exit crect: call crlf ; 显示正确输入信息 lea dx,messg2 call outmessg exit: retinput endpdecibin proc near mov SZBJ,0 ; 标志置初值 mov ah,1 ; 以下两句调用DOS功能输入数据 int 21h mov dl,al ; 输入的数据送DL sub al,30h ; 以下四句将输入的数字ASCII码转换为二进 jl exit1 ; 制数并比较是否是有效数字 cmp al,9d jg exit1 mov SZBJ,1 ;置有效数字标志 exit1: retdecibin endpcrlf proc near mov dl,0ah ; 换行功能 mov ah,02h int 21h mov dl,0dh ; 回车功能 mov ah,02h int 21h retcrlf endpoutput proc near cmp cx,0 ; 是否有有效数字进入 je notscret ; 没有,不执行加密,退出 lea di,buffer ; 置目的缓冲区首址 lea si,indata ; 置源缓冲区首址scret: mov al,si ; 取需加密的数字 mov bx,offset array ; 置加密表的首址 xlat ; 数据交换 mov di,al ; 交换后的数据送目的地址 inc si ; 以下两句修改源和目的缓冲区地址 inc di loop scret notscret: retoutput endpoutmessg proc near mov ah,09h ; 以下三句完成输出功能调用 int 21h retoutmessg endpcodeseg endsend start2.程序的编译连接和调试将原代码保存为ASM的文件后,汇编,连接,生成ex11.exe文件3.直接运行程序,要求任意输入10个数字,查看结果:4.调试运行(1)用U命令查看代码段,数据段,堆栈段的段地址,程序的起点终点。(2)查看列表

温馨提示

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

评论

0/150

提交评论