实验四分支和循环程序设计实验.doc_第1页
实验四分支和循环程序设计实验.doc_第2页
实验四分支和循环程序设计实验.doc_第3页
实验四分支和循环程序设计实验.doc_第4页
实验四分支和循环程序设计实验.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

实验四 分支和循环程序设计实验一、实验要求和目的 1熟悉汇编语言程序设计结构; 2熟悉汇编语言分支程序基本指令的使用方法; 3掌握利用汇编语言实现单分支、双分支、多分支的程序设计方法; 4了解汇编语言循环程序设计的基本流程; 5熟悉汇编语言循环基本指令的使用方法; 6掌握利用汇编语言的循环指令完成循环程序设计方法。二、软硬件环境 1、硬件环境:计算机系统 windows; 2、软件环境:装有 MASM、DEBUG、LINK、等应用程序。三、实验涉及的主要知识 在实际应用中,经常根据一些条件来选择一条分支执行。汇编语言的条件判断主要是通过状态寄存器中的状态位、无符号数相减或有符号相减而导致的结果来进行。 1无条件转移指令 JMP 无条件转移指令 JMP是使程序无条件转移至目标处,又分为段内转移、段间转移。 2条件转移指令 JXX 条件转移指令可分为三大类: 1)简单条件转移指令指令。根据单个标志位的状态判断转移条件。 标志位 指令 转移条件 意义 CF JC CF=1 有进位/借位 JNC CF=0 无进位/借位 ZF JE/JZ ZF=1 相等/等于 0 JNE/JNZ ZF=0 不相等/不等于 0 SF JS SF=1 是负数 JNS SF=0 是正数 OF JO OF=1 有溢出 JNO OF=0 无溢出 PF JP/JPE PF=1 有偶数个 1 JNP/JPO PF=0 有奇数个 1 2)无符号数条件转移指令。 假设在条件转移指令前使用比较指令,比较两个无符号数A,B,指令进行的的操作是A-B,其转移指令如下: 指令 转移条件 意义 JA/JNBE CF=0 AND ZF=0 AB JAE/JNB CF=0 OR ZF=1 A=B JB/JNAE CF=1 AND ZF=0 AB JBE/JNA CF=1 OR ZF=1 AB JGE/JNL SF=OF OR ZF=1 A=B JL/JNGE SF OF AND ZF=0 AB JLE/JNG SF OF OR ZF=1 A=4*A*CN Y输出: TAG=1输出: TAG=0 结束(2)程序代码:DATAS SEGMENT A1 DB ? B1 DB ? C1 DB ? TAG DB ? ;此处输入数据段代码 DATAS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATASSTART: MOV AX,DATAS MOV DS,AX MOV AH,01H;输入第一个数据 INT 21H SUB AL,30H;输入数据存入A,并转化为十进制数 MOV A1,AL MOV AH,01H;输入第二个数据 INT 21H SUB AL,30H MOV B1,AL MOV AH,01H;输入第三个数据 INT 21H SUB AL,30H;输入数据存入C,并转化为十进制数 MOV C1,AL MOV AL,B1 MUL AL;计算B*B,结果存入AX MOV BX,AX;B*B结果存入BX MOV AL,A1 IMUL C1 MOV CL,4 IMUL CL;计算4*A*C CMP BX,AX JGE T1 MOV TAG,0 JMP NEXT1T1: MOV TAG,1;有根,将TAG赋值为1 NEXT1: ADD TAG,30H MOV DL,TAG;输出TAG的值 MOV AH,02H INT 21H MOV AH,4CH INT 21HCODES ENDS END START程序结果: B*B-4AC=0,0,0的三种情况2、编写一个程序,判别键盘上输入的字符;若是 1-9字符,则显示之;若为 A-Z字符,显示“C”;若为 a-z字符,显示“ c”;若是回车字符 (其 ASCII码为 0DH),则结束程序,若为其它字符则显示显示“R”。 流程图:DATAS SEGMENT ;此处输入数据段代码 结果DATAS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATASSTART: MOV AX,DATAS MOV DS,AX MOV AH,01H INT 21H CMP AL,1;同1比较 JNB ONEONE: CMP AL,9;同9比较 JL READ JGE TOWREAD:MOV DL,AL MOV AH,02H INT 21H MOV AH,4CH INT 21HTOW: CMP AL,A;同A比较 JGE AA: CMP AL,Z;同Z比较 JL READ1 JGE THREEREAD1:MOV DL,C MOV AH,02H INT 21H MOV AH,4CH INT 21H THREE:CMP AL,a;同a比较 JGE B;a则转到B B: CMP AL,z;同z比较 JL READ2 JGE FOUR READ2: MOV DL,c MOV AH,02H INT 21H MOV AH,4CH INT 21HFOUR:CMP AL,0DH JZ CR JNZ FIVE CR: MOV AH,4CH INT 21H FIVE: MOV DL,R MOV AH,02H INT 21H ;此处输入代码据段代码 MOV AH,4CH INT 21HCODES ENDS END START3、(大家再次编成实现实验一的题目,看是否可以优化程序?)分类统计字数组 data中正数、负数和零的个数,并分别存入内存字变量Positive、Negative和 Zero中,数组元素个数保存在其第一个字中。使用 Debug查看Positive、Negative和 Zero三个变量的数据。用CX记录数据个数SI记录数组偏移地址流程图CX不等于0NY继续循环判断退出循环。输出正数负数和零的个数程序代码 DATAS SEGMENT NUM DW 30,4,16,-2,0,6,34,0,-4,3 CNT EQU $-NUM POSITIVE db 0 Negative db 0 Zero db 0 DATAS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATASSTART: MOV AX,DATASMOV DS,AXLEA SI,NUM ;SI取NUM的偏移地址MOV CX,CNT/2;CX存入数据个数,用于控制循环 S: CMP WORD PTR SI,0 JG P JZ Z INC Negative JMP A P:INC POSITIVE JMP A Z:INC Zero JMP A A:ADD SI,2 LOOP S ADD POSITIVE,30H;把数字转换为相应的ASCII码 MOV DL,POSITIVE MOV AH,02H INT 21H ADD Negative,30HMOV DL,NegativeMOV AH,02H INT 21H ADD Zero,30H MOV DL,ZeroMOV AH,02H INT 21H MOV AH,4CH INT 21H CODES ENDS END START程序结果4、编写程序,在字符串变量 STRING中存有一个以 $为结尾的 ASCII码字符串,要求计算字符串的长度,并把它存入 LENGTH单元中。(要求用条件控制循环方法,并且字符串分数据类型是字节和字两种情况)开始流程图:输入字符串,LEA DX,STRING1,并将字符串缓存入DX,LEA SI,STRING1+2,让SI指向字符串的首地址INC SI,INC CL之后继续判断NCMP BYTE PTRSI,$;判断与$是否相等输出结果Y程序代码:DATAS SEGMENT STRING1 DB 100 db ? DB 100 DUP(?) LENGTH1 DB -1 STR2 DB 0ah,The length of the string is, ,$DATAS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,ES:DATASSTART: MOV AX,DATAS;初始化ES,DX MOV DS,AX MOV ES,AX MOV AH,0AH LEA DX,STRING1 INT 21H;输入字符串 LEA SI,STRING1+2 MOV CL,0S: MOV AH,0 CMP BYTE PTRSI,$;判断与$是否相等 JZ STOP;相等则跳去STOP INC SI INC CL MOV LENGTH1,CL;CL每次变化后保存 JMP SSTOP: LEA DX,STR2 MOV AH,09H INT 21H MOV AH,0 ADD CL,30h MOV DL,

温馨提示

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

评论

0/150

提交评论