北京理工大学汇编第四次(分支和循环程序的设计实验)报告

上传人:xmg****18 文档编号:118785013 上传时间:2019-12-25 格式:DOC 页数:22 大小:496.50KB
返回 下载 相关 举报
北京理工大学汇编第四次(分支和循环程序的设计实验)报告_第1页
第1页 / 共22页
北京理工大学汇编第四次(分支和循环程序的设计实验)报告_第2页
第2页 / 共22页
北京理工大学汇编第四次(分支和循环程序的设计实验)报告_第3页
第3页 / 共22页
北京理工大学汇编第四次(分支和循环程序的设计实验)报告_第4页
第4页 / 共22页
北京理工大学汇编第四次(分支和循环程序的设计实验)报告_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《北京理工大学汇编第四次(分支和循环程序的设计实验)报告》由会员分享,可在线阅读,更多相关《北京理工大学汇编第四次(分支和循环程序的设计实验)报告(22页珍藏版)》请在金锄头文库上搜索。

1、汇编第四次(分支和循环程序设计实验)报告汇编第四次(分支和循环程序设计实验)报告 一、实验要求和目的 1熟悉汇编语言程序设计结构; 2熟悉汇编语言分支程序基本指令的使用方法; 3掌握利用汇编语言实现单分支、双分支、多分支的程序设计方法; 4了解汇编语言循环程序设计的基本流程; 5熟悉汇编语言循环基本指令的使用方法; 6掌握利用汇编语言的循环指令完成循环程序设计方法。 二、软硬件环境 1、硬件环境:计算机系统 windows; 2、软件环境:装有 MASM、DEBUG、LINK、等应用程序。 三、实验涉及的主要知识 在实际应用中,经常根据一些条件来选择一条分支执行。汇编语言的 条件判断主要是通过

2、状态寄存器中的状态位、无符号数相减或有符号相 减产生的结果来进行。 1无条件转移指令 JMP 无条件转移指令 JMP 是使程序无条件转移至目标处,又分为段内转移、 段间转移。 2条件转移指令 JXX 条件转移指令可分为三大类: 1) 简单条件转移指令。根据单个标志位的状态判断转移条件。下表表 word 格式 . . 示条件转移指令标志位的状态: 标志位 指令 转移条件 意义 JC CF=1 有进位/借位 CF JNC CF=0 无进位/借位 JE/JZ ZF=1 相等/等于 0 ZF JNE/JNZ ZF=0 不相等/不等于 0 JS SF=1 是负数 SF JNS SF=0 是正数 JO O

3、F=1 有溢出 OF JNO OF=0 无溢出 JP/JPE PF=1 有偶数个 1 PF 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 A=B JL/JNGE SF OF AND ZF=0 AB JLE/JNG SF OF OR ZF=1 A=4AC tag=1 tag=0 结 束 word 格式

4、. . tag db 0 data ends code segment assume cs:code,ds:data start: mov ax,data mov ds,ax mov al,B mul al mov cx,ax mov al,A mul C mov bx,ax mov ax,4 mul bx sbb ax,cx cmp ax,0 jl yep jmp nope yep: word 格式 . . mov al,1 mov tag,al nope: mov ah,4ch int 21h code ends end start (2)主要操作 初始值 a=5,b=10,c=5 显然有

5、实根 使用-u、-g 命令查看结果,可知确实有 tag=al=1 word 格式 . . 更改 a=1,b=1,c=1,再次查看知 al 未赋值“1” ,故 tag 仍为初始值 “0” -q 退出 word 格式 . . 2、编写一个程序,判别键盘上输入的字符;若是1-9字符,则显示之; 若为A-Z字符,显示“C” ;若为a-z 字符,显示“c” ;若是回车字符 (其ASCII码为0DH),则结束程序,若为其它字符则显示显示“R” 。 流程图如下: Y N Y N Y N Y N (1)代码 DATA SEGMENT 开始 输入字符 ch ch=0DH 1=ch=9 A=ch=Z a=ch0

6、0 =0 开始 赋值数据段 计算长度并赋予 cx 挨个数字与 0 比较 存入 positive存入 zero存入 negetive word 格式 . . N Y (1)代码 data segment buf db 9,5,4,2,0,0,0,-1,-2,-3 positive dw 0 negative dw 0 zero dw 0 data ends code segment assume cs:code,ds:data start: mov ax,data mov ds,ax mov si,0 相应计数器+1 cx=0 计数器存入相应数据 变量的第一个字中 结束 word 格式 . .

7、mov cx,10 s: cmp cx,0 je done dec cx cmp byte ptr si,0 je s1 jg s2 jl s3 s1: inc zero inc si jmp s s2: inc positive inc si jmp s s3: inc negative inc si jmp s done: mov ax,positive mov bx,zero word 格式 . . mov dx,negative mov ah,4ch int 21h code ends end start (2)主要操作 易知,按输入数据 buf db 9,5,4,2,0,0,0,-1

8、,-2,-3 结果应为四 个正数,3 个零,三个负数 即 ax=4、bx=3、dx=3,使用-u、-g 指令查看寄存器结果如下图: 结果正确! -q 退出即可。 word 格式 . . 4、编写程序,在字符串变量STRING中存有一个以$为结尾的ASCII码字 符串,要求计算字符串的长度,并把它存入LENGTH单元中。 (要求用条 件控制循环方法,并且字符串分数据类型是字节和字两种情况)DB型 (1)代码: DATA SEGMENT STRING DB SABERSABEREXCALIBUR$ LEN DB ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:

9、DATA START: MOV AX,DATA MOV DS,AX MOV AX,0 word 格式 . . MOV DI,0 S: CMP BYTE PTR DI,$ JZ END1 INC DI INC AX JMP S END1: MOV WORD PTR LEN,AX MOV AX,4CH INT 21H CODE ENDS END START (2)操作:查看寄存器 AX=13(即十进制 19),与输入吻合,检测成功 word 格式 . . DW 型 (1)代码 DATA SEGMENT BUF DB S,A,B,E,R,$ L DB 0 DATA ENDS CODE SEGMENT

10、 ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV SI,0 L1: MOV AL,BUFSI word 格式 . . CMP AL,$ JE DONE INC L INC SI JMP L1 DONE: MOV AL,L MOV AH,4CH INT 21H CODE ENDS END START (2)操作:查看寄存器 AX=5,与输入吻合,检测成功 word 格式 . . 由于一些极端情况比如当源字符串为“ssssssssss” ,子串为 “ss”时子串数量究竟应当有多少,按照之前给出的算法,第一次循环 结束后,si=1,再次

11、比较时会从第三个“s”开始,即结果只有五个子串, 实际上子串应当有 9 个,所以简化的算法其实有错误,故使用保守做法: data segment str1 db ssssssssss,$ len1 equ $-str1 str2 db ss len2 equ $-str2 count db 0 data ends code segment assume ds:data,cs:code start: mov ax,data mov ds,ax mov es,ax mov bx,len1 word 格式 . . lea si,str1 bazinga: mov cx,len2 lea di,str

12、2 cld repz cmpsb jnz s2 inc count sub si,(len2-1) s2: dec bx cmp bx,len2 jb finish jmp s1 done: mov dl,count add dl,30h mov ah,02h int 21h mov ah,4ch int 21h word 格式 . . code ends end start 每次循环比较后不论结果均将 si 依次增加,虽然操作数增加但是 可以确保正确。 宁可累死在路上,也不能闲死在家里!宁可去碰壁,也不能面壁。是狼就要练好牙,是羊就要练好腿。什么是奋斗?奋斗就是每天很难,可一年一年却越来越容易。不奋斗就是每天都很容易,可一年一年越来越难。能干的人,不在情绪上计较,只在做事上认真;无能的人!不在做事上认真,只在情绪上计较。拼一个春夏秋冬!赢一个无悔人生!早安!献给所有努力的人.

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号