北京理工大学汇编第四次(分支和循环程序设计实验)报告
北京理工大学总汇编实验报告材料实验四
本科实验报告实验名称:分支和循环实验一、实验目的1)掌握比较指令;2)理解条件转移和无条件转移指令的区别;3)掌握单分支、双分支、多分支的程序设计方法;4)掌握循环程序设计方法。
二、实验内容内容一程序代码:DATAS SEGMENTBUF DB 12H,98H,45H,64H,78H,36H,55H,44H,0ABH,0CFH COUNT EQU $-BUFNUM1 DB 0NUM2 DB 0BUF1 DB 00,00BUF2 DB 00,00DATAS ENDSSTACKS SEGMENTSTACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AXMOV CX,COUNTMOV SI,0MOV DI,0L:MOV AL,BUF[SI]CMP AL,0JG L1INC NUM2CBWADC WORD PTR BUF2[DI],AXJMP L2L1:INC NUM1CBWADC WORD PTR BUF1[DI],AX L2:INC SILOOP LMOV AH,4CHINT 21HCODES ENDSEND START程序运行结果:内容二实验代码:DATAS SEGMENTBUF DB 12H,98H,45H,64H,78H,36H,55H,44H,0ABH,0CFH COUNT EQU $-BUFMAX DB 0MIN DB 0DATAS ENDSSTACKS SEGMENTSTACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AXMOV CX,COUNTMOV SI,0MOV AL,BUF[SI]MOV MAX,ALL:INC SIMOV AL,BUF[SI]CMP AL,MAXJL L1MOV MAX,ALL1:DEC CXJNZ LMOV CX,COUNTMOV SI,0MOV AL,BUF[SI]MOV MIN,ALM:INC SIMOV AL,BUF[SI]CMP AL,MINJA M1MOV MIN,ALM1:DEC CXJNZ MMOV AH,4CHINT 21HCODES ENDSEND START程序运行结果:所以可得有符号数的最大值为78H,无符号数的最小值12H。
北京理工大学汇编实验报告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:重复其后的串操作指令。
北京理工大学信号与系统实验报告
实验1 信号的时域描述与运算一、实验目的1、掌握信号的MATLAB表示及其可视化方法。
2、掌握信号基本时域运算的MATLAB实现方法。
3、利用MATLAB分析常用信号,加深对信号时域的理解。
二、实验原理1、连续时间的MATLAB表示连续时间信号指的是在连续时间范围内有定义的信号,即除若干个不连续点外,在任何信号都有意义。
在MATLAB中,连续时间信号可以用两种方法来表示,即向量表示法和符号对象表示法。
向量表示法:严格意义上来说,MATLAB并不能处理连续时间信号,都必须是用信号等时间间隔采样后的采样值来近似表示的,采样时间间隔足够小的时候,这些采样值就可以近似地表示出连续时间信号。
例如:>>t=0:0.01:10;>>x=sin(t);此时利用plot(t,x)命令即可绘制上述信号的时域波形。
符号对象表示法:连续时间信号先用表达式表示出来,然后采用符号表达式来表示信号。
例如:>>sym t;>>x=xin(t);此时利用ezplot(x)命令即可绘制上述信号的时域波形。
常用的信号产生函数:2、连续时间信号的时域运算对连续时间信号的运算包括量信号想家、相乘、微分、积分以及位移反转、尺度变换(尺度伸缩)等1)相加和相乘信号的相加和相乘指两个信号对应时刻的值相加和相乘,对于两个采用向量表示的可以直接使用算术运算的运算符“+”和“•”来计算,此时要求表示两信号的向量时间范围和采样间隔相同,采用符号对象表示的两个信号,可以直接根据符号对象的运算规则运算。
2)微分和积分对于向量表示发表示的连续时间信号,可以用过数值计算的方法计算信号的微分和积分。
这里由时间向量[t1,t2,…,t N]和采样值向量[x1,x2,…,x N]表示的连续信号的微分是利用差分来近似求取的。
MATLAB里用diff来计算差分x(k+1)-x(k)。
连续信号的定积分可以由MATLAB的quad函数实现,调用格式为quad(‘functions_name’,a,b)其中,functions_name为被积函数名,a、b为积分区间。
北京理工大学数信实验报告
实验1 利用DFT 分析信号频谱一、实验目的1、加深对DFT 原理的理解。
2、应用DFT 分析信号的频谱。
3、深刻理解利用DFT 分析信号频谱的原理,分析实现过程中出现的现象及解决方法。
二、实验设备与环境计算机、MATLAB 软件环境。
三、实验基础理论1.DFT 与DTFT 的关系:有限长序列的离散时间傅里叶变换(e )j X ω 在频率区间(02)ωπ≤≤ 的N 个等间隔分布的点2(0k N 1)kk N πω=≤≤-上的N 个取样值可以有下式表示:2120(e )|(n)e(k)(0k N 1)N jkn j Nkk NX x X πωπω--====≤≤-∑由上式可知,序列(n)x 的N 点DFT (k)X ,实际上就是(n)x 序列的DTFT 在N 个等间隔频率点2(0k N 1)kk N πω=≤≤-上样本(k)X 。
2.利用DFT 求DTFT方法1:由(k)X 恢复出(e )j X ω的方法如下:由流程知:11(e )(n)e[(k)W]e N j j nkn j nNn n k X x X Nωωω∞∞----=-∞=-∞===∑∑∑继续整理可得到:12()(k)()Ni k kx e X N ωπφω==-∑其中(x)φ为内插函数:sin()2()sin()2N N ωφωω=方法2:实际在MATLAB 计算中,上述插值运算不见得是最好的办法。
由于DFT 是DTFT 的取样值,其相邻两个频率样本点的间距为2N π,所以如果我们增加数据的长度N ,使得到的DFT 谱线就更加精细,其包络就越接近DTFT 的结果,这样就可以利用DFT 计算DTFT 。
如果没有更多的数据,可以通过补零来增加数据长度。
3.利用DFT 分析连续信号的频谱采用计算机分析连续时间信号的频谱,第一步就是把连续信号离散化,这里需要进行两个操作:一是采样,二是截断。
对于连续时间非周期信号(t)a x ,按采样间隔T 进行采样,阶段长度M ,那么:1(j )(t)e(nT)e M j tj nTa a a n X x dt T x -∞-Ω-Ω-∞=Ω==∑⎰对(j )a X Ω 进行N 点频域采样,得到:2120(j )|(nT)e(k)M jkn Na a M kn NTX T x TX ππ--Ω==Ω==∑采用上述方法计算信号(t)a x 的频谱需要注意如下三个问题:(1)频谱混叠;(2)栅栏效应和频谱分辨率; (3)频谱泄露。
Python语言程序设计 第4章 分支及循环
简单条件构造
简单条件基本形式
<expr> <relop> <expr>
<relop>是关系操作符<, <=, ==, >=, >, != 使用“=”表示赋值语句,使用“==”表示等于 除数字外,字符或字符串也可以按照字典顺序用于条件
比较 <condition>是布尔表达式,为bool类型,布尔值的
PM2.5 0-35 35-75
空气质量等级 优 良
伪代码如下: if PM2.5值 > 75 打印空气污染警告 if PM2.5值 < 35 打印空气质量优,建议户外 运动
75-115 轻度污染 115-150 中度污染 150-250 重度污染 250-500 严重污染
PM2.5指数分级例子-流程图
输入半径R
π*R*R S
2*π*R L
输出 S、L的值
结束
顺序
流程图-表示算法
例:求给定数R的绝对值。
算法: R R≥0
|R|= -R R<0
这是分支程序结构
Y R S
开始
输入R N
R≥0 -R S
输出 S的值 结束
流程图-表示算法
例: 给定K值,求1到 K连加和。 Sum=1+2+3+…+K。 1I 0 Sum Sum+I Sum(I=1,2,3,…K)
多分支决策
要解决双根问题,就需要对delta等于0的情况进 行处理。语句的结构上要引入嵌套结构。
当delta < 0,处理无实根情况; 当delta = 0,处理实根情况; 当delta > 0,处理“双根情况;
北京理工大学微机原理实验报告
微机原理与接口技术实验报告实验内容:汇编语言程序设计实验组别: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中。
北理工汇编语言实验讲义-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)保存汇编程序点击“工具栏”中的“保存”按钮(或“文件/另存为”或“文件/保存”),弹出“另存为”对话框,键入文件名,如“我的第一个汇编程序”,然后点击“保存”即可。
北京理工大学汇编语言实验报告一
汇编语言实验报告实验一 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的逻辑正确性,改动如下:现实在DA TA1中添加字节型sum ,再将ADDITION的运行结果,从AX送到sum中去。
5.调试发现ADDITION并没用正确运行。
检查语句逻辑性发现,应将JAE改成JB,才能实现累加并终结。
北理工数据结构实验四
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电,通力根1保过据护管生高线产中敷工资设艺料技高试术中卷0资不配料仅置试可技卷以术要解是求决指,吊机对顶组电层在气配进设置行备不继进规电行范保空高护载中高与资中带料资负试料荷卷试下问卷高题总中2体2资,配料而置试且时卷可,调保需控障要试各在验类最;管大对路限设习度备题内进到来行位确调。保整在机使管组其路高在敷中正设资常过料工程试况1卷中下安,与全要过,加度并强工且看作尽护下可1都关能可于地以管缩正路小常高故工中障作资高;料中对试资于卷料继连试电接卷保管破护口坏进处范行理围整高,核中或对资者定料对值试某,卷些审弯异核扁常与度高校固中对定资图盒料纸位试,置卷编.工保写况护复进层杂行防设自腐备动跨与处接装理地置,线高尤弯中其曲资要半料避径试免标卷错高调误等试高,方中要案资求,料技编试术写5、卷交重电保底要气护。设设装管备备置线4高、调动敷中电试作设资气高,技料课中并3术试、件资且中卷管中料拒包试路调试绝含验敷试卷动线方设技作槽案技术,、以术来管及避架系免等统不多启必项动要方高式案中,;资为对料解整试决套卷高启突中动然语过停文程机电中。气高因课中此件资,中料电管试力壁卷高薄电中、气资接设料口备试不进卷严行保等调护问试装题工置,作调合并试理且技利进术用行,管过要线关求敷运电设行力技高保术中护。资装线料置缆试做敷卷到设技准原术确则指灵:导活在。。分对对线于于盒调差处试动,过保当程护不中装同高置电中高压资中回料资路试料交卷试叉技卷时术调,问试应题技采,术用作是金为指属调发隔试电板人机进员一行,变隔需压开要器处在组理事在;前发同掌生一握内线图部槽 纸故内资障,料时强、,电设需回备要路制进须造行同厂外时家部切出电断具源习高高题中中电资资源料料,试试线卷卷缆试切敷验除设报从完告而毕与采,相用要关高进技中行术资检资料查料试和,卷检并主测且要处了保理解护。现装场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
北京理工大学汇编第四次(分支和循环程序设计实验)报告
北京理工大学汇编第四次(分支和循环程序设计实验)报告汇编第四次(分支和循环程序设计实验)报告一、实验要求和目的1.熟悉汇编语言程序设计结构;2.熟悉汇编语言分支程序基本指令的使用方法;3.掌握利用汇编语言实现单分支、双分支、多分支的程序设计方法;4.了解汇编语言循环程序设计的基本流程;5.熟悉汇编语言循环基本指令的使用方法;6.掌握利用汇编语言的循环指令完成循环程序设计方法。
二、软硬件环境1、硬件环境:计算机系统 windows;2、软件环境:装有MASM、DEBUG、LINK、等应用程序。
三、实验涉及的主要知识在实际应用中,经常根据一些条件来选择一条分支执行。
汇编语言的条件判断主要是通过状态寄存器中的状态位、无符号数相减或有符号相减产生的结果来进行。
1.无条件转移指令JMP无条件转移指令JMP是使程序无条件转移至目标处,又分为段内转移、段间转移。
2.条件转移指令JXX条件转移指令可分为三大类:1).简单条件转移指令。
根据单个标志位的状态判断转移条件。
下表表示条件转移指令标志位的状态:2).无符号数条件转移指令。
假设在条件转移指令前使用比较指令,比较两个无符号数A,B,指令进行的的操作是A-B,其转移指令如下:3)带符号数条件转移指令。
在汇编程序设计中,要熟练使用循环指令和跳转指令等来实现循环,理解循环体结构中的初始化部分、循环体、结束部分,并且要结合前面分支结构相关的知识点,加深对循环结构的理解和掌握。
循环结构的组成及其设计方法的知识要点有:1、循环程序的基本结构通常由3部分组成1) 初始化部分建立循环初始值,为循环做准备,如设置地址指针,(BX/SI/DI/BP),初始化循环控制变量或计数器(CX),数据寄存器(AX/DX)初值等.2) 循环体循环体是循环程序的主体,是程序中重复执行的程序段.它是由循环工作部分、修改部分、和循环控制部分。
①循环工作部分:完成程序功能的主要程序段,用于解决程序的实际任务;②修改部分:对循环参数进行修改,并为下一次循环做准备;③循环控制部分:判断循环结束条件是否满足。
实验二分支程序实验和循环程序实验
实验二分支程序实验和循环程序实验
山东大学
【上篇】分支程序实验
一、实验内容:
1、编写一个程序,显示AL寄存器中的两位十六进制数
二、程序流程图:
三、实验过程:
1、用记事本编写源程序,并命名为shang.asm,转换成.asm文件。
2.在dos系统中进行编译:
3、用link.exe进行连接:
4、运行程序,看到al寄存器中的两位16进制数是3E。
【下篇】循环程序实验
一、实验内容:
1、编写一个程序,判别键盘上输入的字符;若是1-9字符,则显示之;若为A-Z或a-z
字符,均显示'c';若是回车字符<CR>(其ASCII码为0DH),则自动结束程序,若为其它字符则不显示,循环等待新的字符输入。
二、程序流程图:
三、实验过程:
1、用记事本编写源程序,命名为xia.asm。
2、在dos系统中进行编译:
3、用link.exe进行连接:
4.运行程序,分别输入“0”,“A”,“a”,“;”和回车进行验证:。
分支与循环程序设计实验报告
实验名称 分支与循环程序设计实验指导教师 罗志祥专业班级 光电1406 姓名 段昳晖 学号 U2014***** 联系电话 137********一、任务要求1. 设有8bits 符号数X 存于外部RAM 单元,按以下方式计算后的结果Y 也存于外部RAM 单元,请按要求编写完整程序。
264/2106410X X Y X X XX ⎧≥⎪=<<⎨⎪≤⎩ 当 当 当 2. 利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过P0、P1、P2端口输出(以压缩BCD 码的形式)。
P3.0为低电平时开始计时,为高电平时停止计时。
设计1s 延时子程序(延时误差小于10us ,晶振频率12MHz )。
二、设计思路1. 设有8bits 符号数X 存于外部RAM 单元,按以下方式计算后的结果Y 也存于外部RAM 单元,请按要求编写完整程序。
264/2106410X X Y X X XX ⎧≥⎪=<<⎨⎪≤⎩ 当 当 当 将外部单元1000H 中的X ,通过分支判断,分别执行不同的语句,三条语句分别为标记为L1、L2、L3,先比较X与64的大小关系,再判断X与10的大小关系,主要利用比较转移指令CJNE,以及执行CJNE指令后的进位位CY,进一步比较大小,分别跳转至对应语句。
将结果存于外部单元的1001H以及1002H。
2.利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过P0、P1、P2端口输出(以压缩BCD码的形式)。
P3.0为低电平时开始计时,为高电平时停止计时。
设计1s延时子程序(延时误差小于10us,晶振频率12MHz)。
主程序设计三层循环,分别对应时、分、秒,最内层安放一秒延时程序。
利用R0、R1、R2计数,R3保存分钟数、R4保存小时数,最内层循环60次,中循环循环1次,中循环60秒,外循环循环1次,外循环循环24次,清零。
北京理工大学汇编实验报告
本科实验报告实验名称:实验二算术运算实验课程名称:课程设计Ⅰ(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。
北理工汇编语言实验报告3
汇编语言实验报告实验三字符串操作实验(设计性实验)班级:05611102姓名:肖枫学号:1120111431实验日期:2013.9.7下午一、实验要求和目的1.了解汇编语言字符串处理基本流程;2.熟悉汇编语言字符串处理基本指令的使用方法;3.掌握利用汇编语言实现字符串处理的程序设计方法。
二、软硬件环境1、硬件环境:计算机系统windows;2、软件环境:装有MASM、DEBUG、LINK、等应用程序。
三、实验涉及的主要知识1、字符串处理基本操作流程(1)利用SI 寄存器保存源串首地址;(2)利用DI 寄存器保存目的串首地址;(3)利用CX 寄存器保存字符串长度;(4)利用CLD 或STD 指令设置字符串处理方向;(5)利用字符串处理指令实现相关处理。
其中,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、字符串处理基本指令(1)MOVS 传送指令格式:MOVS DST,SRC 或MOVSB(传送字节)或MOVSW(传送字)。
北京理工大学信号与系统实验报告
实验1 信号的时域描述与运算一、实验目的1、掌握信号的MATLAB表示及其可视化方法。
2、掌握信号基本时域运算的MATLAB实现方法。
3、利用MATLAB分析常用信号,加深对信号时域的理解。
二、实验原理1、连续时间的MATLAB表示连续时间信号指的是在连续时间范围内有定义的信号,即除若干个不连续点外,在任何信号都有意义。
在MATLAB中,连续时间信号可以用两种方法来表示,即向量表示法和符号对象表示法。
向量表示法:严格意义上来说,MATLAB并不能处理连续时间信号,都必须是用信号等时间间隔采样后的采样值来近似表示的,采样时间间隔足够小的时候,这些采样值就可以近似地表示出连续时间信号。
例如:>>t=0:0.01:10;>>x=sin(t);此时利用plot(t,x)命令即可绘制上述信号的时域波形。
符号对象表示法:连续时间信号先用表达式表示出来,然后采用符号表达式来表示信号。
例如:>>sym t;>>x=xin(t);此时利用ezplot(x)命令即可绘制上述信号的时域波形。
常用的信号产生函数:2、连续时间信号的时域运算对连续时间信号的运算包括量信号想家、相乘、微分、积分以及位移反转、尺度变换(尺度伸缩)等1)相加和相乘信号的相加和相乘指两个信号对应时刻的值相加和相乘,对于两个采用向量表示的可以直接使用算术运算的运算符“+”和“•”来计算,此时要求表示两信号的向量时间范围和采样间隔相同,采用符号对象表示的两个信号,可以直接根据符号对象的运算规则运算。
2)微分和积分对于向量表示发表示的连续时间信号,可以用过数值计算的方法计算信号的微分和积分。
这里由时间向量[t1,t2,…,t N]和采样值向量[x1,x2,…,x N]表示的连续信号的微分是利用差分来近似求取的。
MATLAB里用diff来计算差分x(k+1)-x(k)。
连续信号的定积分可以由MATLAB的quad函数实现,调用格式为quad(‘functions_name’,a,b)其中,functions_name为被积函数名,a、b为积分区间。
北京理工大学汇编实验报告
本科实验报告实验名称:实验三字符串操作实验一、实验目的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:重复其后的串操作指令。
实验二 分支与循环程序设计实验
开始 (A)X Y (A)=0 ? N (A)>0 ?N (A)=-1 存结果 结果 Y
开始 (A)X (A)=0 ? N (R0)=-1
(A)=1
(A)<0 ?N (R0)=-1 存结果 结果
(a)
(b)
七、实验报告要求 1、实验内容1为必做内容;内容2、3任选为必做。内容1有单步调试 与全速执行记录,内容2或者内容3有单步调试、断点调试以及全速 执行记录。 2、每个内容要求有程序框图与程序清单(每条指令注释)。
实验二
一、 实验目的
分支与循环程序设计实验
1.进一步了解仿真软件使用、汇编程序编写和汇编程序调试方法。
2.掌握分支与循环程序设计的方法。
二、实验仪器和设备 PC机、WAVE仿真软件。
三、实验内容
内容1:设变量X存放于R2,函数值y存放在R3。试按照下式的要求给y赋值: 1 X>0 y = 0 X=0 -1 X<0 内容2:统计一数组(自拟数据)中零、负数、正数的个数。 内容3:求一数组(自拟数据)中最大数(或最小数)。
3、对T21.ASM源程序进行编译。点击项目菜单,选择全部编译。编译无 误后,打开数据窗口,选择外部数据存储器窗口DATA,拖动DATA窗口的 滚动条,使地址**出现在窗口上,观察**单元的内容。执行程序:点击 全速执行快捷按钮,点击暂停按钮,点击复位按钮,可再次运行程序。 4、打开CPU窗口,选择单步或跟踪执行方式运行程序,观察CPU窗口各寄 存器的变化,可以看到程序执行的过程,加深对实验的了解。
5、内容2或者内容3进行2、3、4操作,增加断点调试,观察相应单元或 寄存器数据变化。
六、参考程序 (内容1)
先分支后赋值。自变量X是个带符号数,故可采用累加器判零条 件转移和位控制条件转移指令来分析判断,程序流程如图 (a)所示 。 ORG 0500H MOV A,R2 ;自变量-->(A) CJNE A,#0,L1 ;(A)与0比较,不等则转移 MOV R3,#0 ;若相等,0(R1) SJMP L3 L1: JB ACC.7,L2 ;自变量<0则转移 MOV R3,L3 ;自变量>0,1+(R1) SJMP L3 L2: MOV R3,#0FFH ;自变量<0,1(R1) L3: SJMP $ END
北理工汇编语言实验报告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.熟悉汇编语言循环基本指令的使用方法;6.掌握利用汇编语言的循环指令完成循环程序设计方法。
二、软硬件环境1、硬件环境:计算机系统 windows;2、软件环境:装有MASM、DEBUG、LINK、等应用程序。
三、实验涉及的主要知识在实际应用中,经常根据一些条件来选择一条分支执行。
汇编语言的条件判断主要是通过状态寄存器中的状态位、无符号数相减或有符号相减产生的结果来进行。
1.无条件转移指令JMP无条件转移指令JMP是使程序无条件转移至目标处,又分为段内转移、段间转移。
2.条件转移指令JXX条件转移指令可分为三大类:1).简单条件转移指令。
根据单个标志位的状态判断转移条件。
下表表示条件转移指令标志位的状态:2).无符号数条件转移指令。
假设在条件转移指令前使用比较指令,比较两个无符号数A,B,指令进行的的操作是A-B,其转移指令如下:3)带符号数条件转移指令。
在汇编程序设计中,要熟练使用循环指令和跳转指令等来实现循环,理解循环体结构中的初始化部分、循环体、结束部分,并且要结合前面分支结构相关的知识点,加深对循环结构的理解和掌握。
循环结构的组成及其设计方法的知识要点有:1、循环程序的基本结构通常由3部分组成1) 初始化部分建立循环初始值,为循环做准备,如设置地址指针,(BX/SI/DI/BP),初始化循环控制变量或计数器(CX),数据寄存器(AX/DX)初值等.2) 循环体循环体是循环程序的主体,是程序中重复执行的程序段.它是由循环工作部分、修改部分、和循环控制部分。
①循环工作部分:完成程序功能的主要程序段,用于解决程序的实际任务;②修改部分:对循环参数进行修改,并为下一次循环做准备;③循环控制部分:判断循环结束条件是否满足。
通常判断循环结束方法:用计数控制循环;循环是否进行了预定的次数。
用条件控制循环。
循环终止条件是否满足。
3)结束处理处理部分主要是对循环的结果进行处理,比如现实提示信息等,很多时候没有此部分程序。
2、循环控制指令:指令格式执行操作循环结束条件LOOP标号CX=CX-1;若CX=0,则循环CX=0 LOOPNZ/LOOPNE 标号CX=CX-1;若CX=0且ZF=0,则循环CX=0或ZF=0LOOPZ/LOOPE标号CX=CX-1;若CX=0且ZF=1,则循环CX=0或ZF=1JCXZ 标号仅测试(CX)=0?若等于0,则转移到目标地址,否则顺序执行3、循环控制可以分为:计数循环和条件循环。
作为计数循环,一般是指循环次数是已知的情况,在程序设计的的循环时,先应将循环次数送入计数器CX中进行计数,在循环体中使用LOOP等循环指令。
当然,也可以通过其他方式来进行,如cx←cx-1,jnz 等结合实现。
四、实验内容与步骤1、判断方程AX2+BX+C=0 是否有实根。
若有实根,则将字节变量tag置1,否则置0。
假设A、B、C均为字节变量,数据范围为-128~127。
流程图如下:(1)代码data segmentA db 5B db 10C db 5tag db 0data endscode segmentassume cs:code,ds:data start:mov ax,datamov ds,axmov al,Bmul almov cx,axmov al,Amul Cmov bx,axmov ax,4mul bxsbb ax,cxcmp ax,0jl yepjmp nopeyep:mov al,1mov tag,alnope:mov ah,4chint 21hcode endsend start(2)主要操作初始值a=5,b=10,c=5 显然有实根使用-u、-g 命令查看结果,可知确实有tag=al=1更改a=1,b=1,c=1,再次查看知al未赋值“1”,故tag仍为初始值“0”-q退出2、编写一个程序,判别键盘上输入的字符;若是1-9字符,则显示之;若为A-Z字符,显示“C”;若为a-z 字符,显示“c”;若是回车字符(其ASCII码为0DH),则结束程序,若为其它字符则显示显示“R”。
流程图如下:(1)代码DATA SEGMENTCHAR DB ?DATA ENDSSTACK SEGMENTSTACK ENDSCODE SEGMENTASSUME CS:CODE,SS:STACK,DS:DATA START: MOV AX,DATAMOV DS,AXMOV AH,1HINT 21HCMP AL,0DHJE END1CMP AL,39HJBE L1JMP L2L1: CMP AL,31HJAE S1JMP END0L2: CMP AL,41HJB END0CMP AL,59H JBE END2 JMP L3L3: CMP AL,61H JB END0CMP AL,79H JBE END3 JMP END0 S1: MOV DL,AL MOV AH,02 INT 21H JMP END1 END0:MOV DL,52H MOV AH,02 INT 21H JMP END1 END2:MOV DL,43H MOV AH,02H INT 21H JMP END1END3:MOV DL,63HMOV AH,02HINT 21HJMP END1END1:MOV AH,4CHINT 21HCODE ENDSEND START(2)主要操作分别输入9 d G ’以及回车,使用-t、-g指令查看结果如下,满足要求3、分类统计字数组data中正数、负数和零的个数,并分别存入内存字变量Positive、Negative和Zero中,数组元素个数保存在其第一个字中。
使用Debug查看Positive、Negative和Zero三个变量的数据。
流程图如下:(1)代码data segmentbuf db 9,5,4,2,0,0,0,-1,-2,-3 positive dw 0 negative dw 0zero dw 0data endscode segmentassume cs:code,ds:data start:mov ax,datamov ds,axmov si,0mov cx,10s:cmp cx,0je donedec cxcmp byte ptr [si],0je s1jg s2jl s3s1: inc zeroinc sijmp ss2: inc positive inc sijmp ss3: inc negative inc sijmp sdone:mov ax,positive mov bx,zero mov dx,negative mov ah,4ch int 21hcode endsend start(2)主要操作易知,按输入数据buf db 9,5,4,2,0,0,0,-1,-2,-3 结果应为四个正数,3个零,三个负数即ax=4、bx=3、dx=3,使用-u、-g指令查看寄存器结果如下图:结果正确!-q退出即可。
4、编写程序,在字符串变量STRING中存有一个以$为结尾的ASCII码字符串,要求计算字符串的长度,并把它存入LENGTH单元中。
(要求用条件控制循环方法,并且字符串分数据类型是字节和字两种情况)DB型(1)代码:DATA SEGMENTSTRING DB 'SABERSABEREXCALIBUR$'LEN DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AX MOV AX,0MOV DI,0S: CMP BYTE PTR [DI],'$'JZ END1INC DIINC AXJMP SEND1:MOV WORD PTR [LEN],AXMOV AX,4CHINT 21HCODE ENDSEND START(2)操作:查看寄存器AX=13(即十进制19),与输入吻合,检测成功DW型(1)代码DATA SEGMENTBUF DB 'S','A','B','E','R','$' L DB 0 DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA START: MOV AX,DATAMOV DS,AXMOV SI,0L1: MOV AL,BUF[SI]CMP AL,'$'JE DONEINC LINC SIJMP L1DONE:MOV AL,L。