汇编语言分支结构程序设计_第1页
汇编语言分支结构程序设计_第2页
汇编语言分支结构程序设计_第3页
汇编语言分支结构程序设计_第4页
汇编语言分支结构程序设计_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

1、实验七 分支结构程序设计一、实验目的掌握条件转移指令的使用方法及指令对标志寄存器中各标志位的影响;掌握标志位和转移指令之间的关系;会用条件转移指令和无条件转移指令设计多分支结构程序;掌握设置断点调试程序的方法。二、示 例1、内存自BUF单元开始的缓冲区连续存放着10个学生的英文分数,编程序统计其中90100,6089,60以下者各有多少人?并把90-100分人数结果存放在P1单元中、6089分人数结果存放在P2单元中,60分以下人数结果存放在P3单元中(P1、P2、P3为数据段的单元),最后把P1、P2、P3中的数以”P1=?、P2=?、P3=?”显示在屏幕上。(注:数据以10进制显示)DAT

2、A SEGMENT BUF DB 70H,58H,50H,91H,99H,62H,75H,82H,74H,60H ;定义BUF单元地址开始的缓冲区的数据ORG 0020H ;程序执行时,将P1送到0200H内存单元 P1 DB 0ORG 0030H ;程序执行时,将P2送到0300H内存单元 P2 DB 0ORG 0040H P3 DB 0 ;程序执行时,将P3送到0400H内存单元 ORG 0050H ;程序执行时,将DP1送到0500H内存单元 DP1 DB P1= $ORG 0060H ;程序执行时,将DP2送到0600H内存单元 DP2 DB P2= $ORG 0070H ;程序执行时

3、,将DP3送到0700H内存单元 DP3 DB P3= $ ORG 0080H ;程序执行时,将COUNT送到0800H内存单元 COUNT DW 10 ;$为地址运算符,返回当前程序语句的地址偏移值DATA ENDS ;定义数据段CSEG SEGMENT ASSUME CS:CSEG,DS:DATA PUSH DS ;将DS压入堆栈 SUB AX,AX;将AX内存器内容清空 PUSH AXSTART:MOV AX,DATA MOV DS,AX ;将数据传给数据段DS MOV CX,COUNT ;设置计数器CX,最多为10 MOV SI,0 ;给SI赋值为0LP1: MOV AL,BUFSI

4、;将BUF内存单元的第si个内容赋值给AL CMP AL,90H ;判断该学生的分数是否=90 JNB LP2 ;若不低于90则跳转到LP2 CMP AL,60H ;判断该学生的分数是否=60 JC LP3 ;若产生进位则跳转到LP3 INC P2 ;将分数在60-89的学生的分数个数存放到P2中 JMP LP5 ;跳转到LP5,即循环遍历数组BUFLP3: INC P3 ;将P3中的个数+1 JMP LP5 ;跳转到LP5LP2: INC P1 ;给P1中的个数+1 LP5: INC SI ;将SI进行+1操作,即下一个成绩分数 LOOP LP1 ;循环LP1 LEA DX,DP1 MOV

5、AH,09H INT 21H MOV DL,P1 ADD DL,30H ;转对应的ASCII值 MOV AH,2 INT 21H ;将P1数据转10进制输出 LEA DX,DP2 MOV AH,09H INT 21H MOV DL,P2 ADD DL,30H ;转对应的ASCII值 MOV AH,2 INT 21H ;将P2数据转10进制输出 LEA DX,DP3 MOV AH,09H INT 21H MOV DL,P3 ADD DL,30H ;转对应的ASCII值 MOV AH,2 INT 21H MOV AH,4CH INT 21H ;将P3数据转10进制输出CSEG ENDS END S

6、TART对上述程序加上注释,并运行观察结果。运行结果:BUF开始的内存单元的10个数中有2个=90,6个在60-89,2个在60以下验证正确三、实验题1已知DATAX和DATAY单元各存放一个带符号字节数据,从键盘上接收加()、减()、乘(*)或除(/)符号,然后完成相应运算,结果存入RLT单元。 四、实验报告1、总结调试分支程序的方法;2、写出程序清单,并记录执行结果。解:总结调试分支程序的方法将每个分支的功能编写清楚后,根据运行结果与自身判断结果相比较,若有误,则单步执行程序,观察程序运行的每一步结果变化是否和自身想象的一样。已知DATAX和DATAY单元各存放一个带符号字节数据,从键盘上

7、接收加()、减()、乘(*)或除(/)符号,然后完成相应运算,结果存入RLT单元。程序代码:DATAS SEGMENTDATAX DB 9HDATAY DB 2HRLT DB 1 DUP(?) ;此处输入数据段代码 DATAS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATASSTART: MOV AX,DATAS MOV DS,AX ;将DATAS中的数据存入DS MOV BL,DATAX ;将DATAX送入BL MOV BH,DATAY ;将DATAY送入BH MOV AH,01H int 21H ;DOS功能调用,等待键盘输入一个值 CMP AL,+ J

8、E addition ;若输入符号为+,则跳转到addition CMP AL,- JE subtraction;若输入符号为-,则跳转到subtraction CMP AL,* JE multiplication;若输入符号为*,则跳转到multiplication CMP AL,/ JE division ;若输入符号为/,则跳转到division addition: ADD BL,BH ;将BL,BH内容相加 JMP print ;跳转到输出过程 subtraction: SUB BL,BH ;将BL,BH内容相减 JMP printmultiplication: MOV AL,BH M

9、UL BL ;将BL,BH内容相乘 MOV BL,AL JMP print division: MOV AL,BL SUB AH,AH DIV BH ;将BL,BH内容相除 MOV BL,AL JMP print print: MOV AL,BL MOV CL,4 SHR AL,CL ;将AL数据逻辑右移4位 ADD AL,30H ;将AL数据转为对应ASCII值 CMP AL,39H ;比较AL中数据与39H的大小 JBE look1 ;当AL=39H,则只加07Hlook1: MOV DL,AL MOV RLT,AL MOV AH,02H INT 21H MOV AL,BL AND AL,0FH ADD AL,30H CMP AL,39H JBE look2

温馨提示

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

评论

0/150

提交评论