北京理工大学汇编实验五
北京理工大学汇编实验报告3
北京理工大学汇编实验报告3本科实验报告实验名称:实验三字符串操作实验课程名称:课程设计Ⅰ(CPU与汇编)(实验)实验时间:第5-10周周五下午任课教师:聂青实验地点:10-102实验教师:苏京霞实验类型:☑原理验证□综合设计□自主创新学生姓名:罗逸雨学号/班级:1120141208 05211401 组号:3 学院:信息与电子学院同组搭档:专业:通信工程成绩:CX 中值减 1,当 CX 中值减至 0 时,停止重复执行,继续执行下一条指令。
当REP无条件重复前缀,重复串操作直到计数寄存器的内容 CX 为0为止。
经常与REP 配合工作的字符串处理指令有MOVS、STOS和LODS。
当REPE/REPZ判断计数寄存器的内容 CX 是否为0或ZF=0(即比较的两个操作数不等),只要满足一个则重复执行结束,否则继续执行。
可以与 REPE/REPZ 配合工作的串指令有CMPS和SCAS。
当REPNE/REPNZ判断计数寄存器的内容是否为0或ZF=1(即比较的两个操作数相等),只要满足一个则重复执行结束,否则继续执行。
可以与 REPE/REPZ 配合工作的串指令有CMPS和SCAS。
3)字符串操作指令lodsb、lodsw:把DS:SI指向的存储单元中的数据装入AL或AX,然后根据 DF 标志增减 SI;stosb、stosw:把AL或AX中的数据装入ES:DI指向的存储单元,然后根据 DF 标志增减 DI;movsb、movsw:把 DS:SI 指向的存储单元中的数据装入ES:DI指向的存储单元中,然后根据 DF标志分别增减SI和DI;scasb、scasw:把AL或AX 中的数据与ES:DI 指向的存储单元中的数据相减,影响标志位,然后根据DF标志分别增减SI和DI;cmpsb、cmpsw:把DS:SI 指向的存储单元中的数据与 ES:DI 指向的存储单元中的数据相减,影响标志位,然后根据DF标志分别增减SI和DI;rep:重复其后的串操作指令。
北京理工大学汇编语言实验报告一
汇编语言实验报告实验一 DOS环境下的汇编语言编程环境使用(基础与验证型)班级:05211002姓名:张宁学号:1120102310实验日期:2012.9.7晚6:00~9:00汇编语言实验报告实验一 DOS 环境下的汇编语言编程环境使用(基础与验证型)一、实验要求和目的1、掌握汇编语言程序设计的基本流程和学会上机开发简单程序;2、熟练掌握宏汇编程序MASM 的使用;3、熟练掌握连接程序LINK 的使用;4、熟练掌握DEBUG 的使用;二、软硬件环境1、硬件环境:计算机系统windows;2、软件环境:装有MASM、DEBUG、LINK、等应用程序。
三、实验涉及的主要知识汇编语言程序设计上机开发过程如图1.1 所示。
四、实验内容与步骤1、汇编、链接并调试给出的简单程序,找出程序中的错误。
(一)录入并建立汇编语言源程序文件(ASM 文件)(二)用汇编程序MASM 将ASM 文件汇编成目标程序文件(OBJ 文件)(三)用连接程序LINK 生成可执行程序文件(EXE 文件)(四)程序的调试2、完成程序设计:分类统计字数组data 中正数、负数和零的个数,并分别存入内存字变量Positive、Negative 和Zero 中,数组元素个数保存在其第一个字中。
使用Debug 查看Positive、Negative 和Zero 三个变量的数据。
五、实验过程及结果:实验一:1.输入给出的程序2.运行输入的程序,发现了三处错误:根据错误提示,发现错误为ADDITION后未打冒号,CMP错打为COM。
修改原代码:改为:3.代码编译成功,生成OBJ文件,再生成EXE文件,可成功运行。
4.在原程序代码后添加两行代码,以验证ADDITION的逻辑正确性,改动如下:现实在DATA1中添加字节型sum ,再将ADDITION的运行结果,从AX送到sum中去。
5.调试发现ADDITION并没用正确运行。
检查语句逻辑性发现,应将JAE改成JB,才能实现累加并终结。
北京理工大学-计算机网络实践-FTP客户端实验报告
实验五 FTP客户端程序1.实验目的文件传送协议FTP是Internet中广泛使用的服务协议之一,FTP协议是客户/服务器之间进行文件传递的协议。
●理解FTP协议的工作原理●掌握FTP客户程序的编程方法●理解在FTP传输过程中建立的两个连接2.实验内容利用WinSock编程接口编写FTP客户程序,在用户界面中给出必要的FTP 服务器信息:FTP服务器的IP地址、用户名、口令等,通过FTP协议实现指定文件的上载和下载操作。
3.实验环境程序运行环境为以太网,采用TCP/IP协议栈,网络操作系统为Windows,具有Internet连接能力。
程序开发环境为vs2012。
4.实验步骤步骤1 需求分析FTP客户程序功能为:(1) FTP客户程序首先显示用户界面,可以指定FTP服务器的地址、用户名和口令等信息(2)通过FTP协议接收FTP服务器的当前目录列表,并显示本地和远程目录列表信息(3)可以实现本地和远程目录的切换(4)可以实现文件的上载和下载操作步骤2 FTP客户程序开发用Visual C++编写FTP客户程序,利用WinSock编程接口实现FTP协议通信。
FTP客户程序首先显示用户界面,使用户可以指定FTP服务器和用户、口令信息(可以采用匿名方式),点击连接按钮后,向FTP服务器的TCP 21号端口建立TCP连接,在控制连接上发送FTP命令,首先获得本地和远程系统的目录列表并显示,可以进行目录切换等操作,指定上、下载的文件建立数据连接进行文件传送。
步骤3 编译和执行程序将FTP客户程序编译、连接成执行程序,运行FTP客户程序。
填写校园网的FTP服务器IP和用户、口令信息,进行各种FTP操作(文件上载、下载)。
5.具体实现(1)数据结构分析定义FileItem结构来保存文件信息typedef struct FileItem{int nItem; // 在列表框中的索引BOOL bDir; // 判断是否为文件夹CString strFileName; // 文件名}FILEITEM;主对话框类完成FTP的大部分功能其中:ID_control成员变量:CListCtrl m_ctrlRemoteFiles; // IDC_LIST_REMOTE 映射的列表型变量CListCtrl m_ctrlLocalFiles; // IDC_LIST_LOCAL 映射的列表型变量CString m_strPassword; // IDC_PASSWORD 映射的CString型变量CString m_strServer; // IDC_SERVER 映射的CString型变量CString m_strUserName; // IDC_USER 映射的CString型变量其他添加功能所需成员变量:CInternetSession* m_pInetSession; // 会话对象CFtpConnection* m_pFtpConnection; // 连接对象CFtpFileFind* m_pRemoteFinder; // 远程查找文件对象CFileFind m_LocalFinder; // 本地查找文件对象CString m_strLocalParentRoot; // 本地文件目录的上上一层目录CString m_strRemoteParentRoot; // 远程文件目录的上上一层目录CArray<FILEITEM,FILEITEM&>m_arrLocalFiles; // 保存本地文件信息CArray<FILEITEM,FILEITEM&>m_arrRemoteFiles; // 保存远程文件信息 成员函数:/* 初始化程序 */BOOL CMyFtpDlg::OnInitDialog()/* 给列表控件CListCtrl增加标题头 */void CMyFtpDlg::AddHeaders(CListCtrl* pLstCtrl)/* 给列表框增加一条记录 */void CMyFtpDlg::AddItem(CListCtrl* pLstCtrl,int nIndex,BOOL bDir,CString strText)/* 响应“download”按钮 */void CMyFtpDlg::OnDownload()/* 响应“Upload”按钮 */void CMyFtpDlg::OnUpload()/* 下载单个文件 */void CMyFtpDlg::DownFile(FILEITEM fileItem)/* 上传单个文件 */void CMyFtpDlg::UpFile(FILEITEM fileItem)/* 连接ftp服务器 */void CMyFtpDlg::OnConnect()/* 获得指定目录下的所有文件,并在列表框中显示 */void CMyFtpDlg::BrowseDir(CString strDir,CListCtrl* pLstCtrl,CFileFind* pFinder,CArray<FILEITEM,FILEITEM&>* pFilesArr)/* 本地文件目录中向上一层 */void CMyFtpDlg::OnLocalUp()/* 远程文件目录中向上一层 */void CMyFtpDlg::OnRemoteUp()主要函数1.在OnInitDialog()函数中进行对话框、列表的初始化,并且设定本地文件目录的默认路径为C盘为根目录。
北京理工大学汇编实验五实验报告概要
本科实验报告实验名称:子程序设计实验实验五子程序设计实验(设计性实验)一、实验要求和目的1.熟悉汇编语言程序设计结构;2.熟悉汇编语言子程序设计方法;3.熟悉利用汇编语言子程序参数传递方法;4.熟悉汇编语言字符串处理基本指令的使用方法;5.掌握利用汇编语言实现字符串的输入输出程序设计方法;6.掌握数制转换程序实现方法。
二、软硬件环境1、硬件环境:计算机系统windows;2、软件环境:装有MASM、DEBUG、LINK、等应用程序。
三、实验涉及的主要知识A)子程序知识要点:1、掌握子程序的定义语句;过程名PROC [near/far] 过程体RET过程名ENDP2.子程序结构形式一个完整的子程序一般应包含下列内容:1. )子程序的说明部分在设计了程序时,要建立子程序的文档说明,使用户能清楚此子程序的功能和调用方法.说明时,应含如下内容:.子程序名:命名时要名中见意..子程序的功能:说明子程序完成的任务;.子程序入口参数:说明子程序运行所需参数及存放位置;.子程序出口参数:说明子程序运行结果的参数及存放位置;.子程序所占用的寄存器和工作单元;.子程序调用示例;2、)掌握子程序的调用与返回在汇编语言中,子程序的调用用CALL,返回用RET指令来完成。
.段内调用与返回:调用子程序指令与子程序同在一个段内。
因此只修改IP;.段间调用与返回:调用子程序与子程序分别在不同的段,因此在返回时,需同时修改CS:IP。
3.)子程序的现场保护与恢复保护现场:在子程序设计时,CPU内部寄存器内容的保护和恢复。
一般利用堆栈实现现场保护和恢复的格式:过程名PROC[NEAR/FAR]PUSH AXPUSH BX..PUSH DX...POP DX...POP AXRET过程名ENDP4.子程序的参数传递方法1.寄存器传递参数这种方式是最基本的参数传递方式。
2.存储器单元传(变量)递参数这种方法是在主程序调用子程序前,将入口参数存放到约定的存储单元中;子程序运行时到约定存储位置读取参数;子程序执行结束后将结果也放在约定存储单元中。
北理工汇编语言实验讲义-2016
CPU与汇编语言实验讲义张芨高平信息系统及安全对抗实验中心2016第一部分汇编语言设计中使用的系统软件简介 (3)第一章 MASM for Windows 集成实验环境 (4)第二章调试程序DEBUG的使用 (9)第二部分宏汇编语言程序设计 (17)实验一 MASM for Windows 环境下的汇编语言编程环境使用 (17)实验二算术运算实验 (19)实验三字符串操作实验 (22)实验四分支和循环实验 (25)实验五子程序与模块化程序设计实验 (28)实验六磁盘文件读写实验 (32)第一部分汇编语言设计中使用的系统软件简介汇编语言实验操作流程图如图1所示。
图1汇编语言实验操作过程在实验室上机时,计算机有教师机统一开启,学生不要随意关机。
1)严禁带电操作;2)带上理论课教材、实验指导书及准备的实验程序;3)调试实验程序,记录实验结果;4)实验结束后,关闭所有应用程序。
第一章 MASM for Windows 集成实验环境1.熟悉MASM for Windows 集成实验环境运行实验室计算机的MASM for Windows 软件,如图2所示。
图 2 MASM for Windows运行环境2.编写运行第一个汇编程序1)输入汇编程序打开MASM for Windows 集成实验环境,在“程序输入区”编写一个显示“Hello World!”的程序。
如图3所示。
图3输入汇编程序红色方框内是需要输入的汇编程序代码,而其它的汇编程序代码该软件自动生成汇编程序框架。
说明:输入的内容分别是:红色框1内的代码:STRING DB 'Hello World',13,10,'$'红色框2内的代码:LEA DX,STRINGMOV AH,9INT 21H2)保存汇编程序点击“工具栏”中的“保存”按钮(或“文件/另存为”或“文件/保存”),弹出“另存为”对话框,键入文件名,如“我的第一个汇编程序”,然后点击“保存”即可。
北京理工大学信号与系统实验 实验5 连续时间系统的复频域分析
实验5 连续时间系统的复频域分析一、实验目的1.掌握拉普拉斯变换及其反变换的定义,并掌握MATLAB 实现方法。
2.学习和掌握连续时间系统系统函数的定义及复频域分析方法。
3.掌握系统零极点的定义,加深理解系统零极点分布与系统特性的关系。
二、实验原理与方法1.拉普拉斯变换连续时间信号)(t x 的拉普拉斯变换定义为 )1.....(..........)()(dt e t x s X st ⎰+∞∞--=拉普拉斯反变换定义为)2....(..........)(21)(ds e s X j t x j j st ⎰∞+∞-=σσπ 在MATLAB 中,可以采用符号数学工具箱的laplace 函数和ilaplace 函数进行拉氏变换和反拉氏变换。
L=laplace(F)符号表达式F 的拉氏变换,F 中时间变量为t ,返回变量为s 的结果表达式。
L=laplace(F,t)用t 替换结果中的变量s 。
F=ilaplace(L)以s 为变量的符号表达式L 的拉氏反变换,返回时间变量为t 的结果表达式。
F=ilaplace(L,x)用x 替换结果中的变量t 。
除了上述ilaplace 函数,还可以采用部分分式法,求解拉普拉斯逆变换,具体原理如下: 当 X (s )为有理分式时,它可以表示为两个多项式之比:)3.(..........)()()(011011a s a s a b s b s b s D s N s X N N N N M M M M +⋯+++⋯++==---- 式(3)可以用部分分式法展成一下形式 )4.....(.............)(2211NN p s r p s rp s r s X -++-+-=通过查常用拉普拉斯变换对,可以由式(1-2)求得拉普拉斯逆变换。
利用 MATLAB 的residue 函数可以将 X (s )展成式(1-2)所示的部分分式展开式,该函数的调用格式为:[r,p,k] = residue(b,a) 其中b 、a 为分子和分母多项式系数向量,r 、p 、k 分别为上述展开式中的部分分式系数、极点和直项多项式系数。
北理(bit)微机原理上机软件实验报告
北理(bit)微机原理上机软件实验报告微机原理软件编程实验报告班级:学号:姓名:⼀、实验题⽬1、IDE86集成开发环境的学习和运⽤2、编写程序求出10个数中的最⼤值和最⼩值,并以单步形式观察如何求出最⼤值、最⼩值。
3、求1到100 的累加和,并⽤⼗进制形式将结果显⽰在屏幕上。
要求实现数据显⽰,并返回DOS状态。
4、将存储器中的⼗个字节型⼗六进制有符号数按从⼩到⼤的顺序排序并按⼗六进制显⽰出来。
(56H、0ffH、78H、82H、12H、0、95H、58H、0bcH、34H)⼆、实验⽬的1、学习并掌握IDE86集成开发环境的使⽤包括编辑、编译、链接、调试与运⾏等步骤编辑:源程序的输⼊、修改。
编译:常见编译出现的语法错误的修改。
可执⾏⽂件。
运⾏:运⾏、断点设置、单步运⾏、单步跟踪;观察寄存器、标志寄存器值;观察数据存储器中的数据。
2、完成所有题⽬,提⾼编程能⼒,加深对理论课的理解。
三、实验内容1、⽂字叙述设计思路1.1编写程序求出10个数中的最⼤值和最⼩值由于⼀共有⼗个数,所以求其最⼤数或者最⼩数需要⽐较9次。
从数据段的段⾸开取数,先取两个数进⾏⽐较,⽐较完后取其中的最⼤数或者最⼩数放⼊数据段的第⼆位中。
再取第三位数与第⼆位数⽐较,如此循环,⽐较9次后在数据段最末位的就是我们需要的数。
1.2求1到100 的累加和,并⽤⼗进制形式将结果显⽰在屏幕上求和部分:1~100⼀共有100个数,所以需要做100次加法。
做加法要有两个数,第⼀个数是第i位的数值,第⼆个数是i-1位以及之前所有数的和,所以这两个数必须分别存放在两个寄存器⾥,并且两个数相加之后的所得的值,必须放在存放“和”的寄存器中,另外⼀个寄存器每做完⼀次加法⾃加1。
显⽰部分:我们所求得的最终数值在内存中是以16进制数存放的,但是由于结果只是⼀个数,我们可以把它的每⼀位所对应的ASCII码按照⼀定的顺序存放到⼀个数据段中,再以字符串形式直接输出。
1.3将存储器中的⼗个字节型⼗六进制有符号数按从⼩到⼤的顺序排序并按⼗六进制显⽰出来⽐较部分:题⽬⼀共给了我们10个数,如果要进⾏排序的话可以先把⼗个数中最⼤的数选出来,放到数据段的最后⼀个位置,接着再选出次⼤的数放到数据段的倒数第⼆位,如此循环到最后便可成功将所给的⼗个数排序好。
北京理工大学单片机实验报告
北京理工大学实验选修课程《单片机原理与应用》课程实验报告姓名:学号:**********专业:信息工程班级:05111003实验一 P1口基本实验一、实验目的1.掌握如何建立项目,并用Keil C51软件调试程序。
二、实验内容1. P1口基本实验P1口做输出口,接八只发光二极管(如图1-1),编写程序,使发光二极管从左到右依次单个点亮,再从右至左依次单个点亮,以此循环。
各发光二极管的阳极通过保护电阻接到+5V 的电源上,阴极接到接线端口上,因此使其点亮应使相应接线端口为低电平。
三、实验原理1. P1口实验原理P1口为准双向口,P1口的每一位都能独立地定义为输入位或输出位。
作为输入位时,必须向锁存器相应位写入“1”。
2. 延时原理及计算方法常用的延时程序有两种方法,一种是用定时器中断来实现,另一种是用指令循环来实现。
用C 语言编写的延时子程序,计算延时时间时需转化为汇编语言。
针对不同的编译环境,C51编译后生成的代码不同。
针对本实验系统,若延时时间大于255ms,用C51实现可大致写出如下:unsigned int i;unsigned char j;while(i--){ for(j=0;j<60;j++){;}}若延时时间不大于255ms ,可将循环变量(i,j )定义为unsigned char ,并将内循环体中参数改为75。
四、实验代码#include<reg51.h>unsigned char L; /*L 传递亮灭的数值*/或 unsigned int i, ms; unsigned char j; for(i=0;i<ms;i++) { for(j=0;j<60;j++) {;} }delay(unsigned int ms) /*延时子程序*/{unsigned char j;unsigned int i;for(i=0;i<ms;i++){for(j=0;j<60;j++) /*内循环空操作*/{;}}}void display() /*显示输出子程序*/{P1=~L; /*LED共阳极,L取反输出*/delay(1000); /*延时1秒*/}main(){unsigned char i;L=0xFF; /*全亮*/display();L=0x00; /*全灭*/display();while(1) /*进入死循环,重复执行程序*/{L=0x01; /*LED1亮*/display();for(i=0;i<8;i++) /*LED右移8次点亮*/{L=L<<1; /*L左移1位*/display();}L=0x80; /*LED8亮*/display();for(i=0;i<8;i++) /*LED左移8次点亮*/{L=L>>1; /*L右移1位*/display();}}}五、实验心得通过这次实验我们熟悉了专用的调试环境,并练习了编写代码、编译链接、烧写程序、调试运行等一系列的实验步骤,对C51单片机有了一个初步的直观认识。
北京理工大学电子信息类汇编语言实验报告――文件操作.
第六章磁盘文件存取实验(设计性实验一、实验要求和目的1. 理解文件、目录的概念;2. 了解 FCB(文件控制块方式文件管理方法;3. 掌握文件代号式文件存取方式;4. 学习使用文件指针读取文件二、软硬件环境1. 硬件环境:计算机系统 windows;2. 软件环境:装有 MASM、DEBUG、LINK、等应用程序。
三、实验涉及的主要知识单元DOS 功能调用中断(INT 21H提供了两类磁盘文件管理功能,一类是 FCB(文件控制块方式,另一类是文件代号式存取方式。
对于文件的管理,实际上是对文件的读写管理, DOS 设计了四种存取文件方式:顺序存取方式、随机存取方式、随机分块存取方式和代号法存取方式。
文件的处理步骤A 写之前必须先建立文件、读之前必须先打开文件。
B 写文件之后一定要关闭文件。
通过关闭文件,使操作系统确认此文件放在磁盘哪一部分,写后不关闭会导致写入文件不完整。
1、文件代号式存取方式: 当用户需要打开或建立一个文件时,必须提供文件标识符。
文件标识符用ASCII Z 字符串表示。
ASCII Z 字符串是指文件标识符的 ASCII 字符串后面再加1 个“0”字符。
文件标识符的字符串包括驱动器名、路径名和文件名。
其格式为[d:][path]filename[.exe]其中 d 为驱动器名,path 为路径名,.exe 为文件名后缀。
中断 21H 提供了许多有关目录和文件操作的功能,其中文件代号式存取方式常用的功能如下:2、操作目录的常用功能39H——创建目录 3BH——设置当前目录3AH——删除目录 47H——读取当前目录有关中断功能的详细描述和调用参数在此从略,需要查阅者可参阅相关资料之目录控制功能。
3、用文件句柄操作文件的常用功能3CH——创建文件 4EH——查找到第一个文件3DH——打开文件 4FH——查找下一个文件3EH——关闭文件 56H——文件换名3FH——读文件或设备 57H——读取/设置文件的日期和时间40H——写文件或设备 5AH——创建临时文件41H——删除文件 5BH——创建新文件42H——设置文件指针 67H——设置文件句柄数(最多文件数43H——读取/设置文件属性 6CH——扩展的打开文件功能有关中断功能的详细描述和调用参数在此从略,需要查阅者可参阅相关资料之文件操作功能。
实验五Windows安全策略与审计
北京理工大学珠海学院实验报告ZHUHAI CAMPAUS OF BEIJING INSTITUTE OF TECHNOLOGY班级:学号:姓名:指导教师:成绩实验题目实验五Windows安全策略与审计实验实验时间一、实验目的:(1)理解操作系统系统构筑的安全防护体系(2)通过用户的一系列设置,掌握有效的系统安全策略二、实验内容以及步骤:(信息系统安全/操作系统安全/Windows系统安全)1.Windows操作系统中文件操作的审计策略:硬盘上新建一个名为“你的学号.vsd”文件,制定该文件的“删除”和“修改”的审计策略。
(1)实验操作者以管理员身份登录系统:打开“控制面板|管理工具”,运行“本地安全策略”;打开“本地安全设置”对话框,选择“本地策略|审核策略”,双击“审核对象访问”,选“成功”和“失败”,如图2.1.1-45所示。
图2.1.1-45审核对象访问窗口(2)在硬盘上新建一个名为“100503011005.vsd”文件,右键单击该文件,单击“属性”,然后单击“安全”选项卡。
如图2.1.1-46所示。
图2.1.1-46(3)单击“高级”,然后单击“审核”选项卡。
如图2.1.1-47所示。
图2.1.1-47(4)单击“添加”;在“输入要选择的对象名称”中,键入“Everyone”,然后单击“确定”。
如图2.1.1-48所示。
图2.1.1-48选择用户或组或者如图2.1.1-49所示,单击“高级”,选择“Everyone”如图2.1.1-50所示。
图2.1.1-49选择用户或组图2.1.1-50选择用户或组(5)在“测试保密.vsd的审核项目”对话框中,选择访问中的“删除”和“更改权限”的功能;如图2.1.1-51所示。
至此,对“测试保密.vsd”的审计设置完后,删除此文件。
如图2.1.1-52所示。
图2.1.1-52(6)右键单击桌面上“我的电脑”,选择“管理”,在计算机管理中,选择“系统工具|事件查看器|安全性”,或在“开始|运行”中执行eventvwr.exe,应该能看到。
北京理工大学汇编实验报告
本科实验报告实验名称:实验二算术运算实验课程名称:课程设计Ⅰ(CPU与汇编)(实验)实验时间:第5-10周周五下午任课教师:聂青实验地点:10-102实验教师:京霞实验类型:☑原理验证□综合设计□自主创新学生:罗逸雨学号/班级:1120141208 05211401 组号:3学院:信息与电子学院同组搭档:专业:通信工程成绩:一、实验目的1) 掌握MASM for Windows 环境下的汇编语言编程环境使用;2) 掌握汇编语言程序设计的基本流程及汇编语言中的二进制、十六进制、十进制、BCD码的表示形式;3) 掌握汇编语言对多精度十六进制和十进制的编程方法及运算类指令对各状态标志位的影响及测试方法;4) 掌握无符号数和有符号数运算区别及编程方法;二、实验环境与原理1.实验软硬件环境1) 硬件环境:惠普64 位一体化计算机及局域网;2) 软件环境:Windows 8,红蜘蛛管理系统,MASM for Windows。
2.实验原理算术运算实验需要对运行结果进行调试及查看状态字,其相关知识如下。
1) 标志位在debug调试过程中,标志位用特殊符号表示的,其标志名和状态符号的对照表参照表1所示。
2) 加减法指令ADD表示加法指令,ADC表示带进位加法指令,SUB表示减法指令,SBB表示带进位减法指令。
3) 乘除法指令MUL表示无符号数乘法指令,IMUL表示带符号数乘法指令,DIV表示无符号数除法指令,IDIV表示带符号数除法指令。
4) 符号位扩展指令CBW表示从字节扩展到字的指令,CWD表示从字扩展到双字的指令。
5) BCD码的调整指令在进行十进制加减运算时,需要将数据用BCD码表示,还要考虑到是组合BCD 码还是非组合BCD码,组合BCD码是用一个字节表示两位十进制数,非组合BCD 码是用一个字节表示一位十进制数,对于组合的BCD码加减法运算其结果存放在AL中。
组合的BCD码加法调整指令DAA;组合的BCD码减法调整指令DAS;非组合的BCD码加法调整指令AAA;非组合的BCD码减法调整指令AAS;乘法的非组合BCD码调整指令AAM;除法的非组合BCD码调整指令AAD。
北京理工大学微波实验报告——雷达系统实验大纲
实验四 船用导航雷达系统实验一、 实验目的1、 掌握船用导航雷达系统的工作原理和各主要模块的功能;2、 掌握船用导航雷达系统的操作使用方法。
二、 实验内容1、 结合实用船用导航雷达系统学习其工作原理和各主要模块的功能;2、 结合实用船用导航雷达系统学习掌握其操作使用方法;3、 应用实用船用导航雷达系统测试三个不同方位目标的距离和方位值。
三、 船用导航雷达系统工作原理1、 基本知识雷达(RADAR )是英文”radio detection and ranging ”的缩写,意思是“无线电探测和测距”。
这一发明被用于第二次世界大战。
在发明雷达前,船只在大雾中航行时,只能通过发出短促汽笛、灯光和敲钟的方法,利用回声传回的时间来大致估算与目标之间的位置从而避免碰撞。
雷达发出的射频电磁波,通过计算电磁波反射回来所需的时间来确定到达目标的距离,这是在已知雷达波传播速度是接近恒定的也就是光速的前提下实现的。
这样通过计算雷达波从发出到从目标反射回到天线的时间,就可以计算出船只到目标的距离。
这个时间是往返的时间,将它除以2才是电磁波从船只到达目标的单程距离的时间。
这些都是由雷达内部的算法来自动完成的。
雷达确定目标的方位是通过雷达天线发射波束在空间的扫描来实现的。
雷达天线发射波束在空间是不均匀分布的,其主波束内的功率密度远大于副瓣内的功率密度,因而主波束内目标反射的信号强度远大于副瓣内目标反射的信号强度,所以此时雷达探测到的目标信号可以认为是来自主波束内目标反射的信号,且认定目标方位处于雷达天线主波束的最大方向上。
当天线波束最大方向瞄准某一个目标时,如果另一个目标恰好处在天线波束第一零点方向上,则回波信号完全来自天线波束最大方向的那个目标。
因此,天线的分辨率为第一零点波束宽度的一半,即FNBW/2。
例如,当天线的FNBW=20时,具有10的分辨率,可用来辨别方位上相距10的两个目标。
船用导航雷达天线是在水平360°方位上匀速转动,将天线方位位置信号实时送入信息处理机,信息处理机就知道了目标回波信号与目标方位的对应关系。
北京理工大学-信号与系统实验报告
本科实验报告实验名称:信号与系统实验实验一信号的时域描述与运算一、实验目的①掌握信号的MATLAB表示及其可视化方法。
②掌握信号基本时域运算的MATLAB实现方法。
③利用MATLAB分析常用信号,加深对信号时域特性的理解。
二、实验原理与方法1. 连续时间信号的MATLAB表示连续时间信号指的是在连续时间范围内有定义的信号,即除了若干个不连续点外,在任何时刻信号都有定义。
在MATLAB中连续时间信号可以用两种方法来表示,即向量表示法和符号对象表示法。
从严格意义上来说,MATLAB并不能处理连续时间信号,在MATLAB中连续时间信号是用等时间间隔采样后的采样值来近似表示的,当采样间隔足够小时,这些采样值就可以很好地近似表示出连续时间信号,这种表示方法称为向量表示法。
表示一个连续时间信号需要使用两个向量,其中一个向量用于表示信号的时间范围,另一个向量表示连续时间信号在该时间范围内的采样值。
例如一个正弦信号可以表示如下:>> t=0:0.01:10;>> x=sin(t);利用plot(t,x)命令可以绘制上述信号的时域波形,如图1所示。
如果连续时间信号可以用表达式来描述,则还可以采用符号表达式來表示信号。
例如对于上述正弦信号,可以用符号对象表示如下:>> x=sin(t);>> ezplot(X);利用ezplot(x)命令可以绘制上述信号的时域波形常用的信号产生函数2.连续时间信号的时域运算-1-0.8-0.6-0.4-0.200.20.40.60.81Time(seconds)图1 利用向量表示连续时间信号-1-0.50.51t图 2 利用符号对象表示连续时间信号sin(t)对连续时间信号的运算包括两信号相加、相乘、微分、积分,以及位移、反转、尺度变换(尺度伸缩)等。
1)相加和相乘信号相加和相乘指两信号对应时刻的值相加和相乘,对于两个采用向量表示的可以直接使用算术运算的运算符“+”和“*”来计算,此时要求表示两信号的向量时间范围和采样间隔相同。
北京理工大学微机原理实验报告
微机原理与接口技术实验报告实验内容:汇编语言程序设计实验组别:12姓名:班级:学号:一、实验目的1、熟悉IDE86集成开发环境的使用。
2、通过编程、上机调试,进一步理解汇编语言的设计思路与执行过程。
3、熟悉DOS命令调用,以达到输入输出、返回DOS系统等目的。
4、掌握利用汇编实现求和与求最值的方法。
5、掌握利用汇编实现数制转换的方法。
6、巩固理论知识,锻炼动手编程,独立思考的能力。
二、实验内容(具体内容)1、求从TABLE开始的10个无符号字节数的和,并将结果放在SUM字单元中。
并查看前5个,前8个数之和以及各寄存器和内存的状态。
2、在1的基础上修改程序,求出10个数中的最大值和最小值,最后将最大最小值分别赋给MAX及MIN。
3、求1到 100 的累加和,并用十进制形式将结果显示在屏幕上。
要求实现数据显示,并返回DOS状态。
三、实验方法1、设计思路(1)实验1的设计思路:先将10个要相加的数存在以TABLE为首的10个连续的存储单元中,然后利用循环结构依次取出数值放在AL中并累加,若有进位则加到AH中直至循环10次累加结束,将累加的结果放在SUM中并返回DOS状态。
(2)实验2的设计思路:先将10个要比较的数放在以TABLE为首的10个连续的存储单元中。
将第一个数首先赋给AL和AH(分别存储相对最小和最大值)在利用LOOP循环结构,依次和下面的数进行比较,每次把相对的最大值与最小值存储到AH和AL中直至循环9次比较结束,将AH和AL里面的最大值与最小值赋给MAX和MIN,返回DOS状态(3)实验3的设计思路:先在内存中定义COUNT=100,表示1-100求和,若相求1-n的和并显示只需COUNT的值为n即可,同时定义一块以DNUM为首地址的数据区用于存储累加和的十进制数对应的ASCII码。
先利用AX和LOOP求出1-COUNT的累加和存在AX中;在进行数值转化,AX 依次除10取余数保存,将16进制数转化为10进制ASCII码值并存在DUNM中。
北京理工大学微机原理硬件三次实验综合报告
实验二 8255 并行接口实验
实验内容 8255 的 A 口作为输入口,与逻辑电平开关相连。8255 的 B 口作为输出口,与发 光二极管相连。编写程序,使得逻辑电平开关的变化在发光二极管上显示出来。 二,实验目的 (1)掌握 8255 的工作原理。 (2)掌握编写 8255 并行接口初始化及编程实现的方法。 三,实验仪器 微机实验教学系统实验箱、8086CPU 模块 四,实验步骤 连线 8255 的 PA0—PA7 分别与逻辑电平开关的 K1—K8 相连 PB0—PB7 分别与发光二极管电路的 LED1—LED8 相连 CS0 与 8255 的片选 CS8255 相连 其它线路均已连好 具体如图所示:
ENDSTART 实验现象:CS273 的 00 与 LED0 相连,01 与 LED1 相连,02 与 LED2 相连,依次 下去, 直至 07 与 LED7 相连。 每按单脉冲发生器一次产生一次中断申请, 由于 IR0 的优先级比 IR1 低,故先响应 IR1,后响应 IR0,观察到低 4 位的 LED 灯先点亮或 熄灭,高 4 位的 LED 灯后点亮或熄灭。 实验心得 实验让我对 8259A 的内部寄存器的功能有了更深的认识,掌握了 8259A 的初始 化步骤及其工作方式的选择, 以及中断服务程序的编写。 使用实验箱和编译软件, 使我们在编程和动手操作方面都有了很大的提高,软硬件的结合,使我们更加透 彻的理解了所学知识。
DDBUS
Vcc
DD0 DD1 DD2 DD3 DD4 DD5 DD6 DD7 A1 3 Vcc 7 4LS3 2 Vcc IOR D IOWR INT INTA
11 10 9 8 7 6 5 4 27 1 3 2 16 15 D6 D7 A0 CS RD WR SP/EN INT INTA 8 25 9
北京理工大学汇编实验报告
本科实验报告实验名称:实验三字符串操作实验一、实验目的1) 熟悉串操作指令的功能与应用;2) 掌握串操作指令的寻址方式及使用方法,编写常用的字符串处理程序;3) 了解汇编语言字符串处理基本流程;二、实验环境与原理1.实验软硬件环境1) 硬件环境:惠普 64 位一体化计算机及局域网;2) 软件环境:Windows 8,红蜘蛛管理系统,MASM for Windows。
2.实验原理1)字符串操作流程SI寄存器保存源串首地址;DI寄存器保存目的串首地址;CX寄存器保存字符串长度;CLD或STD指令设置字符串处理方向;CLD指令使DF=0在执行串处理指令时可使地址自动增量;STD 使 DF=1,在执行串处理指令时可使地址自动减量。
2)重复前缀指令CX 中存放的值决定,指令每重复执行一次,计数器 CX 中值减 1,当 CX 中值减至 0 时,停止重复执行,继续执行下一条指令。
REP无条件重复前缀,重复串操作直到计数寄存器的内容 CX 为0为止。
经常与REP 配合工作的字符串处理指令有MOVS、STOS和LODS。
REPE/REPZ判断计数寄存器的内容 CX 是否为0或ZF=0(即比较的两个操作数不等),只要满足一个则重复执行结束,否则继续执行。
可以与 REPE/REPZ 配合工作的串指令有CMPS和SCAS。
REPNE/REPNZ判断计数寄存器的内容是否为0或ZF=1(即比较的两个操作数相等),只要满足一个则重复执行结束,否则继续执行。
可以与 REPE/REPZ 配合工作的串指令有CMPS和SCAS。
3)字符串操作指令lodsb、lodsw:把DS:SI指向的存储单元中的数据装入AL或AX,然后根据 DF 标志增减 SI;stosb、stosw:把AL或AX中的数据装入ES:DI指向的存储单元,然后根据 DF 标志增减 DI;movsb、movsw:把 DS:SI 指向的存储单元中的数据装入ES:DI指向的存储单元中,然后根据 DF标志分别增减SI和DI;scasb、scasw:把AL或AX 中的数据与ES:DI 指向的存储单元中的数据相减,影响标志位,然后根据DF标志分别增减SI和DI;cmpsb、cmpsw:把DS:SI 指向的存储单元中的数据与 ES:DI 指向的存储单元中的数据相减,影响标志位,然后根据DF标志分别增减SI和DI;rep:重复其后的串操作指令。
北理工汇编语言实验报告5
汇编语言实验报告实验五子程序设计实验(设计性实验)班级:05611102姓名:肖枫学号:1120111431实验日期:2013.9.11晚上实验四子程序设计实验(设计性实验)一、实验要求和目的1.熟悉汇编语言程序设计结构;2.熟悉汇编语言子程序设计方法;3.熟悉利用汇编语言子程序参数传递方法;4.熟悉汇编语言字符串处理基本指令的使用方法;5.掌握利用汇编语言实现字符串的输入输出程序设计方法;6.掌握数制转换程序实现方法。
二、软硬件环境1、硬件环境:计算机系统windows;2、软件环境:装有MASM、DEBUG、LINK、等应用程序。
三、实验涉及的主要知识A)子程序知识要点:1、掌握子程序的定义语句;过程名 PROC [near/far]过程体RET过程名 ENDP2.子程序结构形式一个完整的子程序一般应包含下列内容:1. )子程序的说明部分在设计了程序时,要建立子程序的文档说明,使用户能清楚此子程序的功能和调用方法. 说明时,应含如下内容:.子程序名:命名时要名中见意..子程序的功能:说明子程序完成的任务;.子程序入口参数:说明子程序运行所需参数及存放位置;.子程序出口参数:说明子程序运行结果的参数及存放位置;.子程序所占用的寄存器和工作单元;.子程序调用示例;2、)掌握子程序的调用与返回在汇编语言中,子程序的调用用CALL,返回用RET 指令来完成。
.段内调用与返回:调用子程序指令与子程序同在一个段内。
因此只修改IP;.段间调用与返回:调用子程序与子程序分别在不同的段,因此在返回时,需同时修改CS:IP。
3.)子程序的现场保护与恢复保护现场:在子程序设计时,CPU 内部寄存器内容的保护和恢复。
一般利用堆栈实现现场保护和恢复的格式:过程名PROC [NEAR/FAR]PUSH AXPUSH BX..PUSH DX...POP DX...POP AXRET过程名 ENDP4.子程序的参数传递方法1.寄存器传递参数这种方式是最基本的参数传递方式。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、实验目的1、掌握子程序有关基本知识,学会子程序设计方法;2、掌握主程序与子程序之间的调用关系及调用方法;3、掌握汇编语言字符串处理方法;4、掌握字符串的输入输出程序设计方法;5、掌握数制转换程序实现方法。
二、实验软硬件环境1、硬件环境:惠普64 位一体化计算机及局域网;2、软件环境:windows 8,红蜘蛛管理系统,MASM for Windows。
三、实验相关知识把功能相对独立的程序段单独编写和调试,作为一个相对独立的模块供程序使用,就性成子程序。
子程序可以实现源程序的模块化,可简化源程序结构,可以提高编程效率。
1) 子程序的定义语句格式汇编语言子程序以proc 语句行开始,以endp 语句行结束。
如:过程名PROC near[或far]过程体..........................过程名ENDP在主程序中用CALL 过程名调用。
主程序和子程序之间传递参数通常通过栈来进行,当然也可以用某些缺省的寄存器或内存来传递。
但以通过栈来传递参数程序的通用性最强。
2) 子程序调用说明子程序从PROC 语句开始,以ENDP 语句结束,程序中至少应当包含一条RET 语句用以返回主程序。
在定义子程序时,应当注意其距离属性:当子程序和调用程序在同一代码段中时,用NEAR 属性;当子程序及其调用程序不在同一个代码段中时,应当定义为FAR 属性。
当由DOS 系统进入子程序时,子程序应当定义为FAR 属性。
为执行子程序后返回操作系统,在子程序的前几条指令中设置返回信息。
3) 子程序使用中的问题A、主程序调用子程序是通过CALL 指令来实现的。
子程序执行后,通过RET 指令,返回主程序调用指令CALL 的下一条指令,继续执行主程序。
一个子程序可以由主程序在不同时刻多次调用。
如果在子程序中又调用了其他的子程序,则称为子程序的嵌套。
特别是当子程序又能调用子程序本身时,这种调用称为递归。
B、调用子程序时寄存器及所用存储单元内容的保护。
如果子程序中要用到某些寄存器或存储单元时,为了不破坏原有的信息,要将寄存器或存储单元的原有内容压栈保护,或存入子程序不用的寄存器或存储单元中。
C、用于中断服务的子程序则一定要把保护指令安排在子程序中,这是因为中断是随机出现的,因此无法在主程序中安排保护指令。
D、调用程序在调用子程序时需要传送一些参数给子程序,这些参数是子程序运算中所需要的原始数据。
子程序运行后要将处理结果返回调用程序。
原始数据和处理结果的传递可以是数据,也可以是地址,统称为参数传递。
E、参数传递必须事先约定,子程序根据约定从寄存器或存储单元取原始数据(称入口参数);进行处理后将处理结果(称出口参数)送到约定的寄存器或存储单元,返回到调用程序。
参数传递一般有下面三种方法:用寄存器传递:适用于参数传递较少、传递速度快的情况;用堆栈传送:适用于参数传递较多、存在嵌套或递归的情况;用存储单元传送:适用于参数传递较多时,但传递速度较慢。
4) 子程序调用的现场保护与恢复保护现场:在子程序设计时,CPU 内部寄存器内容的保护和恢复。
一般利用堆栈实现现场保护和恢复的格式,过程名PROC near[或far]PUSH AXPUSH BXPUSH DX........................POP DXPOP AXRET过程名ENDP5) 键盘输入输出方法汇编语言的数据输入和输出形式如下:A、单个字符数据的输入输出;B、字符串数据的输入输出。
上述通过DOS 功能调用来实现,具体方法如下:A、单个字符输入。
单个字符输入利用DOS 的1 号功能调用实现。
MOV AH,1INT 21H键盘输入的数据以ASCII 码形式存储在AL 寄存器中。
B、单个字符输出。
单个字符输出利用DOS 的2 号功能调用实现。
MOV DL,’?’MOV AH,2INT 21H单个字符输出时将输出字符的ASCII 码放在DL 寄存器中。
C、字符串输入。
键盘输入一串字符串可以利用DOS 的10(或0A)号功能调用来实现。
BUF DB 100 ;预定义最大输入字符个数DB ? ;实际输入字符个数,系统自动统计DB 100 DUP (?) ;存放所输入字符串数据缓冲区........................MOV DX,OFFSET BUFMOV AH,0AHINT 21HA、字符串输出。
字符串输出可由DOS 9 号功能调用来实现。
BUF DB ‘HELLO BIT56$’........................MOV DX,OFFSET BUFMOV AH,9INT 21H四、实验内容1) 编写程序,现有一组字符串为data,name,time,file,code,path,user,exit,quit,text,请编写程序从键盘输入4 个字符的字符串,若存在将其修改为disk, 并将结果在显示器上显示。
2) 编写程序,现有一组字符串为ram,yes,red,the,get,for,and,key,not,may,请编写程序将他们按ASCII 大小排序,并在显示器上显示。
3) 编写程序,现有一组字符串为data,name,time,file,code,path,user,exit,quit,text,请编写程序从键盘输入4 个字符的字符串,若存在将其删除, 并在显示器上显示。
4) 编写程序把从键盘输入的四位十六进制数,转换为十进制形式在屏幕上打印出来。
5) 从键盘输入(显示提示)十个2 位十进制数(正数)到内存中,按从小到大排序,然后把该数以十六进制形式在屏幕上打印出来。
五、程序清单及结果分析1、DATAS SEGMENTBUF DB'data,name,time,file,code,path,user,exit,quit,text$'INPUT DB 10DB?DB 10 DUP('$')DATAS ENDSSTACKS SEGMENTSTACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AXLEA DX,INPUTMOV AH,0AHINT 21HMOV AH,2MOV DL,0AHINT 21HMOV CL,10MOV BL,4LEA SI,BUFLEA DI,INPUT+2COMP:MOV DL,BUF[DI]MOV DH,BUF[SI]CMP DL,DHJNZ NEXTJZ NEXTSINEXTSI:INC SIINC DIDEC BLJZ CHANGEJNZ COMPNEXT:MOV AL,11SUB AL,CLMOV BH,5MUL BHMOV SI,AXLEA DI,INPUT+2MOV BL,4DEC CLJZ OVERJNZ COMPCHANGE:MOV BUF[SI-4],'d'MOV BUF[SI-3],'i'MOV BUF[SI-2],'s'MOV BUF[SI-1],'k'OVER:LEA DX,BUFMOV AH,09INT 21HMOV AH,4CHINT 21HCODES ENDSEND START2、按ASCII码降序排列DATAS SEGMENTBUF DB'ram,yes,red,the,get,for,and,key,not,may$' DATAS ENDSSTACKS SEGMENTSTACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AXLEA DX,BUFMOV AH,09INT 21H;MOV DL,0AHMOV AH,02INT 21HMOV BL,0AHL:MOV CX,9CALL COMPAREDEC BLJNZ LLEA DX,BUFMOV AH,09INT 21HMOV AH,4CHINT 21HCOMPARE PROCCOMP:CMP CL,0JZ RETURNMOV AX,9SUB AL,CLMOV DL,4MUL DLMOV SI,AXMOV DL,BUF[SI+4]DEC CLCMP BUF[SI],DLJZ COMPNEXTJL CHANGEJA COMPCOMPNEXT:INC SIMOV DL,BUF[SI+4]CMP BUF[SI],DLJZ COMPNEXTJL CHANGEJA COMPCHANGE:MOV AX,8SUB AL,CLMOV DL,4MUL DLMOV SI,AXMOV DL,BUF[SI]MOV DH,BUF[SI+4]MOV BUF[SI],DHMOV BUF[SI+4],DLINC SIMOV DL,BUF[SI]MOV DH,BUF[SI+4]MOV BUF[SI],DHMOV BUF[SI+4],DLINC SIMOV DL,BUF[SI]MOV DH,BUF[SI+4]MOV BUF[SI],DHMOV BUF[SI+4],DLJMP COMPRETURN:RETCOMPARE ENDP CODES ENDSEND START按ASCII码降序排列3、DATAS SEGMENTBUF DB'data,name,time,file,code,path,user,exit,quit,text$$$$$' INPUT DB 10DB?DB 10 DUP('$')DATAS ENDSSTACKS SEGMENTSTACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AXMOV ES,AXLEA DX,INPUTMOV AH,0AHINT 21HMOV DL,0AHMOV AH,2INT 21HLEA DI,INPUT+2MOV BL,10MOV CX,4CLDCOMP:MOV AL,10SUB AL,BLMOV DL,5MUL DLMOV SI,AXREPE CMPSBJZ DELETLEA DI,INPUT+2MOV CX,4DEC BLJZ OVERJNZ COMPDELET:MOV AL,BUF[SI+1]MOV BUF[SI-4],ALMOV AL,BUF[SI+2]MOV BUF[SI-3],ALMOV AL,BUF[SI+3]MOV BUF[SI-2],ALMOV AL,BUF[SI+4]MOV BUF[SI-1],ALADD SI,5DEC BLJNZ DELETOVER:MOV AH,9LEA DX,BUFINT 21HMOV AH,4CHINT 21HCODES ENDSEND START4、DATAS SEGMENTDATAS ENDSSTACKS SEGMENTSTACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKS INPUT PROCMOV BX,0MOV CL,4GETCHAR:MOV AH,1INT 21HCMP AL,30HJB OVERREADCMP AL,39HJA CHARSUB AL,30HJMP PLUSCHAR:CMP AL,41HJB OVERREADCMP AL,'F'JA OVERREADSUB AL,41HADD AL,0AHPLUS:MOV AH,0SHL BX,CLADD BX,AXJMP GETCHAROVERREAD:RETINPUT ENDP;;;;;;;;;;;;;CHANGE PROCMOV CX,10000DCALL DIV_MOV CX,1000DCALL DIV_MOV CX,100DCALL DIV_MOV CX,10DCALL DIV_MOV CX,1CALL DIV_RETCHANGE ENDP ;;;;;;;;;DIV_ PROCMOV DX,0MOV AX,BXDIV CXMOV BX,DXMOV DX,AXADD DL,30HMOV AH,2INT 21HRETDIV_ ENDP START:MOV AX,DATASMOV DS,AXCALL INPUTCALL CHANGE MOV AH,4CHINT 21H CODES ENDSEND START5、DATAS SEGMENTBUF DB 30DB?BUF1 DB 30 DUP (?)BUF2 DB 10 DUP (0)DATAS ENDSSTACKS SEGMENTSTA DB 100 DUP (?)STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKS INPUT PROCLEA DX,BUFMOV AH,0AHINT 21HMOV DL,0AHMOV AH,02HINT 21HRETINPUT ENDPTURN PROC NEARLEA SI,BUF1LEA DI,BUF2MOV BL,10MOV CX,10L:MOV AL,[SI]SUB AL,30HMUL BLINC SIADD AL,[SI]SUB AL,30HMOV [DI],ALINC DIADD SI,2LOOP LRETTURN ENDPORDER PROC NEARMOV CX,9LEA SI,BUF2LEA DI,BUF2INC DIL1:PUSH CXPUSH SIPUSH DICALL COMPAREPOP DIPOP SIPOP CXLOOP L1RETORDER ENDPCOMPARE PROC NEAR GO:MOV AL,[SI]MOV BL,[DI]CMP AL,BLJA CHANGEJBE L2L2:INC SIINC DILOOP GORETCHANGE:MOV [SI],BLMOV [DI],ALJMP L2COMPARE ENDPOUTPUT PROC NEARMOV SI,OFFSET BUF2MOV CX,10ON:MOV BX,0MOV DL,[SI]SHR DL,1SHR DL,1SHR DL,1SHR DL,1THEN:CMP DL,10JB IS_NUMADD DL,37HJMP L3IS_NUM:ADD DL,30HL3:MOV AH,02HINT 21HINC BXCMP BX,2JZ L4MOV DL,[SI]AND DL,0FHJMP THENL4:MOV DL,20HMOV AH,02HINT 21HINC SILOOP ONRET OUTPUT ENDP START:MOV AX,DATASMOV DS,AXMOV AX,STACKSMOV SS,AXMOV ES,AXCALL INPUTCALL TURN CALL ORDERCALL OUTPUTMOV AH,4CHINT 21H CODES ENDSEND START六、实验心得经过这次实验,我学会了调用子程序的方式,用CALL调用子程序,通过调用子程序可以化简程序。