精华内容
下载资源
问答
  • 分支程序设计

    千次阅读 2018-09-21 20:57:54
    上机实验06 分支程序设计 知识提要: 本章主要对分支程序加以介绍,其知识要点: 1.无条件转移指令JMP 无条件转移指令JMP是使程序无条件转移至目标处,又分为段内转移、段间转移。 2.条件转移指令JXX 条件...

    上机实验06 分支程序设计

    知识提要:

    本章主要对分支程序加以介绍,其知识要点:

    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

    A>B

    JAE/JNB

    CF=0 OR ZF=1

    A>=B

    JB/JNAE

    CF=1 AND ZF=0

    A<B

    JBE/JNA

    CF=1 OR ZF=1

    A<=B

    3.带符号数条件转移指令。

        指令

    转移条件

    意义

    JG/JNLE

    SF=OF AND ZF=0

    A>B

    JGE/JNL

    SF=OF OR ZF=1

    A>=B

    JL/JNGE

    SF OF AND ZF=0

    A<B

    JLE/JNG

    SF OF OR ZF=1

    A<=B

     

    一、实验要求和目的

       

    1.熟悉汇编语言程序设计结构;

    2.熟悉汇编语言分支程序基本指令的使用方法;

        3.掌握利用汇编语言实现单分支、双分支、多分支的程序设计方法。

     

    二、软硬件环境

     

        1.硬件环境:微机CPU 486以上,500MB以上硬盘,32M以上内存;

    2.软件环境:装有MASM 5.0、DEBUG、LINK和EDIT等应用程序。

     

    三、实验涉及的主要知识单元

    在实际应用中,经常根据一些条件来选择一条分支执行。汇编语言的条件判断主要是通过状态寄存器中的状态位、无符号数相减或有符号和相减而导致的结果来进行。下面就有符号数转移指令来了解在汇编语言程序设计方法。

    如:判断方程AX2+BX+C=0是否有实根。若有实根,则将字节变量TAG置1,否则置0。假设A、B、C均为字节变量,数据范围为-128~127。

    分析:二元一次方程有根的条件是B2-4*A*C>=0。依据题意,先计算出B2和4*A*C,然后比较两者大小,根据比较结果给TAG赋不同的值。

    请分析并理解下面程序:

     

     

     

     

    Data segment

       A db 7

       B db 8

       C db 6

       Tag db ?

    Data ends

    Code segment

       Assume ds:data,cs:code

    Start:

    Mov ax,data

    Mov ds,ax

    Mov al,b

    Imul al;乘法指令,求出B2的值并放入AX中

    Mov bx,ax

    Mov al,a

    Imul c

    Mov cx,4

    Imul cx

    Cmp bx,ax

    Jge yes

    Mov tag ,0

    Jmp done

    Yes: mov tag,1

    Done: mov ah,4ch

    Int 21h

    Code Ends

    End start

    四、实验内容与步骤

    1、实验内容

    录入并调试完成教材P3559-2,例9-3,和P3589-5,掌握8086汇编跳转指令的使用。

    9-2

     

     

    9-3

     

     

    9-5

     

     

     

     

     

    运行结果:

     

     

     

     

     

     

    2、把调试完成后的例9-2,例9-3,例9-5提交。

     

     

    展开全文
  • 汇编:分支程序设计

    千次阅读 2020-03-16 18:28:30
    分支程序设计 (1)简单分支程序:通过判断一个条件获得两路分支,该条件的判断结果决定了程序的执行流向。缺点在于执行流向的局限性,例如当条件为一个多分段函数时,则无法满足要求。 Created with Raphaël 2.2.0...

    分支程序设计

    (1)简单分支程序:通过判断一个条件获得两路分支,该条件的判断结果决定了程序的执行流向。缺点在于执行流向的局限性,例如当条件为一个多分段函数时,则无法满足要求。

    Created with Raphaël 2.2.0开始程序段是否满足条件?结束yesno

    实例:试编程实现函数Y=MAX(X1、X2、X3)的程序。程序流程图如图所示(设X1、X2、X3存放在以BUF起始的3个连续单元中,且均为无符号的8位二进制数)
    在这里插图片描述

    .486
    DATA   SEGMENT
       BUF   DB   21,30,98
         Y      DB    ?
    DATA    ENDS
    CODE   SEGMENT
                ASSUME   CS:CODE,DS:DATA
    START:    MOV    AX,DATA
                    MOV   DS,AX
                    LEA     SI,BUF
                   MOV   AL,[SI]
                   CMP   AL,[SI+1]
                   JNB     NEXT                 ;如果X1不小于X2,则转到NEXT
                   MOV   AL,[SI+1]           ;如果X1小于X2,则将A2送给AL               
    NEXT:     CMP   AL,[SI+2]
                   JNB    NEXT1
                   MOV  AL,[SI+2]
    NEXT1:   MOV   Y,AL
                   MOV  AH,4CH
                   INT     21H
    CODE     ENDS
                   END  START
    

    (2)多分支程序:为解决单分支结构程序的缺点,采用跳转表法实现多分支程序的设计。例如如果我们想要设计一个4分支的程序,在数据段中定义一个TBLE跳转表,里面分别存放4个CASE的地址。每个地址占内存两个单元(2个字节),那么CASE0的地址存放在数据段中地址为TBLE的地方,即表首。假设满足CASE0时跳转至CS段地址为122AH的地方,那么TABLE存放2AH,TABLE+1存放12H。

    跳转表地址 入口标号地址 序号
    TBLE R0低字节+R0高字节 0
    TBLE+2 R1低字节+R1高字节 1
    TBLE+4 R2低字节+R2高字节 2
    TBLE+8 R3低字节+R3高字节 4

    实例:试编程实现:在提示字符串“INPUT”后输入数字序号0~4,根据键盘输入的数字转向5个分支程序段中的某一个。假设各分支程序段入口地址标号为R0-R4,若输入数字n则准信Rn程序段并显示“OUTPUT:n”。当按下回车键时,结束程序。要求利用跳转表实现转移(设各分支程序段与主程序在同一段代码中)。

    .486
    DATA  SEGMENT
      TBLE   DW    R0,R1,R2,R3,R4   ;自动将Rx的偏移地址填进去
    MESS1  DB    'INPUT:$'  ;     字符串定义时必须以'$'结尾
    MESS2  DB    'OUTPUT:$'
    DATA   ENDS
    STACKA  SEGMENT PARA STACK'STACK'  ;PARA定义段首地址(20位的后4位0)为16的整数倍
                   DW  50 DUP(?)
    STACKA  ENDS
    CODE   SEGMENT
                 ASSUME   CS:CODE,DS:DATA,SS:STACKA
    MAIN   PROC  FAR  ;子程序定义指令PROC,FAR为段间调用
    START:  PUSH  DS
                  MOV   AX,0
                  PUSH  AX      ;将子程序中将会用到的寄存器中的内容压栈
                  MOV    AX,DATA
                  MOV    DS,AX
                  MOV    AX,STACKA
                  MOV    SS,AX        ;16~19段寄存器说明语句
    AGAN:   LEA      DX,MESS1
                  MOV    AH,09H
                  INT       21H            ;   DOS09号功能调用
                  MOV    AH,01H
                  INT       21H           ;DOS01号功能调用
               CMP        AL,0DH;     是否键入回车,回车符的ascii码为0DH
                  JZ         EXIT 
                  CMP     AL,'4'
                  JA         AGAN
                  AND     AL,0FH   ;将ascii码变为数字,0~9对应十六进制ascii30~39
                  MOVZX  AX,AL
                  SHL        AX,1
                  MOV     SI,AX
                  LEA       DX,MESS2
                  MOV    AH,9
                  INT      21H
                  JMP     TBLE[SI]      ;转向键入序号程序段,寄存器相对寻址方式
    R0:         MOV   DL,'0'
                  JMP      DISP
    R1:         MOV    DL,'1'
                  JMP      DISP
    R2:         MOV   DL,'2'
                  JMP      DISP
    R3:        MOV    DL,'3'
                  JMP      DISP
    R4:        MOV    DL,'4'
                  JMP      DISP
    DISP:      MOV   AH,02H
                   INT     21H         ;
                   JMP    AGAN
    EXIT:       RET
    MAIN      ENDP
    CODE      ENDS
                   END START
    

    注:在DOS的01H,02H,09H功能中,程序中输入输出都为字符相应的ASCII码,而不是直接的数。

    展开全文
  • 微机实验二——分支程序设计

    微机实验二——分支程序设计

    复习

    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述

    一、实验题目

    用地址表法完成下面要求的多路分支程序的设计。根据MODE单元中的模式字(0~7)分别转向L0、L1…L7标号处执行。L0、L1…L7程序段中分别实现显示’0’~’7’字符。(提示:可用DOS系统功能调用INT 21H)。

    二、代码

    //逻辑分解法
    DATAS SEGMENT
    MODE DB 7//数据段定义字节变量MODE为0
    DATAS ENDS
    
    CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS//CODES部分代码和CS寄存器对应,DATAS的(数据)和DS寄存器对应
    
    START:
    MOV AX,DATAS
    MOV DS,AX
    MOV AL,MODE
    
    CMP AL,0//cmp指令比较两个操作数,它影响flag的CF等 ZF零标志位:若当前的运算结果为零,则ZF为1,否则为0。
    JZ LO//条件跳转指令JZ,等于跳转,ZF=1,转到指定地址执行
    CMP AL,1
    JZ L1
    CMP AL,2
    JZ L2
    CMP AL,3
    JZ L3
    CMP AL,4
    JZ L4
    CMP AL,5
    JZ L5
    CMP AL,6
    JZ L6
    CMP AL,7
    JZ L7
    
    
    LO:MOV DL,'0'
    MOV AH,02H//放2,是2号功能,字符输出,并且要输出的字符是已经放在dl里面的
    INT 21H
    JMP L8
    
    L1:MOV DL,'1'
    MOV AH,02H
    INT 21H
    JMP L8
    
    L2:MOV DL,'2'
    MOV AH,02H
    INT 21H
    JMP L8
    
    L3:MOV DL,'3'
    MOV AH,02H
    INT 21H
    JMP L8
    
    L4:MOV DL,'4'
    MOV AH,02H
    INT 21H
    JMP L8
    
    L5:MOV DL,'5'
    MOV AH,02H
    INT 21H
    JMP L8
    
    L6:MOV DL,'6'
    MOV AH,02H
    INT 21H
    JMP L8
    
    L7:MOV DL,'7'
    MOV AH,02H
    INT 21H
    JMP L8
    
    L8:MOV AH,4CH
    INT 21H//调用DOS中的子程序。当MOV AH,4CH,就是结束本程序,返回DOS操作系统
    CODES ENDS
    END START
    
    

    LEA指令的功能是取偏移地址,例如LEA AX,[1000H],作用是将源操作数[1000H]的偏移地址1000H送至AX。理解时,可直接将[ ]去掉,等同于MOV AX,1000H。
    DOS的中断调用
    通过给AH寄存器赋值,然后调用INT 21H指令,计算机就会根据AH寄存器中的值执行相应的操作,其中1H是键盘输入并回显,AL中有输入字符。
    sub AL, 30h 的意思是把 AL中的值减去30h再存入AL中.
    其目的是把输入的数字代码转换为具体的数值.

    转移表法
    DATAS SEGMENT
    MODE DB 01H
    DATAS ENDS
    
    CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS
    
    START:
    MOV AX,DATAS
    MOV DS,AX
    MOV AL,MODE
    
    LEA BX,TAB
    ADD AL,AL
    MOV AH,0H
    ADD BX,AX
    JMP BX
    
    
    TAB:
    JMP SHORT L0
    JMP SHORT L1
    JMP SHORT L2
    JMP SHORT L3
    JMP SHORT L4
    JMP SHORT L5
    JMP SHORT L6
    JMP SHORT L7
    
    
    L0:MOV DL,'0'
    MOV AH,02H
    INT 21H
    JMP L8
    
    L1:MOV DL,'1'
    MOV AH,02H
    INT 21H
    JMP L8
    
    L2:MOV DL,'2'
    MOV AH,02H
    INT 21H
    JMP L8
    
    L3:MOV DL,'3'
    MOV AH,02H
    INT 21H
    JMP L8
    
    L4:MOV DL,'4'
    MOV AH,02H
    INT 21H
    JMP L8
    
    L5:MOV DL,'5'
    MOV AH,02H
    INT 21H
    JMP L8
    
    L6:MOV DL,'6'
    MOV AH,02H
    INT 21H
    JMP L8
    
    L7:MOV DL,'7'
    MOV AH,02H
    INT 21H
    JMP L8
    
    L8:MOV AH,4CH
    INT 21H
    CODES ENDS
    END START
    
    
    
    //地址表法
    DATAS SEGMENT
    TAB DW L0,L2,L3,L4,L5,L6,L7
    MODE DB 01H
    DATAS ENDS
    
    CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS
    
    START:
    MOV AX,DATAS
    MOV DS,AX
    MOV AL,MODE
    
    ADD AL,AL
    MOV AH,0H
    ADD BX,AX
    SUB BX,2
    JMP TAB[BX]
    
    
    	
    
    
    
    L0:MOV DL,'0'
    MOV AH,02H
    INT 21H
    JMP L8
    
    L1:MOV DL,'1'
    MOV AH,02H
    INT 21H
    JMP L8
    
    L2:MOV DL,'2'
    MOV AH,02H
    INT 21H
    JMP L8
    
    L3:MOV DL,'3'
    MOV AH,02H
    INT 21H
    JMP L8
    
    L4:MOV DL,'4'
    MOV AH,02H
    INT 21H
    JMP L8
    
    L5:MOV DL,'5'
    MOV AH,02H
    INT 21H
    JMP L8
    
    L6:MOV DL,'6'
    MOV AH,02H
    INT 21H
    JMP L8
    
    L7:MOV DL,'7'
    MOV AH,02H
    INT 21H
    JMP L8
    
    L8:MOV AH,4CH
    INT 21H
    CODES ENDS
    END START
    
    
    
    展开全文
  • Java实验报告三:分支程序设计 一、 实验目的 1.理解并掌握Java语言分支语句的结构和使用 二、 实验内容 1.实验步骤: ⑴.编写程序,使用if分支语句。 ⑵.编写程序,使用switch分支语句。 ⑶.记录源程序和运行...

    Java实验报告三:分支程序设计

    一、 实验目的

    1.理解并掌握Java语言分支语句的结构和使用

    二、 实验内容

    1.实验步骤:
    ⑴.编写程序,使用if分支语句。
    ⑵.编写程序,使用switch分支语句。
    ⑶.记录源程序和运行结果,比较分支语句的不同和各自的优势。
    2.程序、运行结果::
    ⑴.设计运行程序
    本次实验选择了经典的百分制的成绩转换成5个等级分类题目,分别用if-else嵌套和switch语句实现。
    if 实现:

    import java.util.Scanner;
    public class Branch {
     	  public static void main(String[] args) {
     		   Scanner input = new java.util.Scanner(System.in);
    		   System.out.print("请输入成绩:");
    		   String s = input.next();
    		   double d = Integer.parseInt(s);
    		   if(d>=90)
    		   System.out.println("A");
    		   else if (d>=80)
    		   System.out.println("B");
    		   else if (d>=70)
    		   System.out.println("C");
    		   else if (d>=60)
    		   System.out.println("D");
    		   else
    		   System.out.println("E"); 
    		   input.close();
     	  }
    }
    
    

    Switch实现:

      import java.util.Scanner;
    public class Branch {
    	   public static void main(String[] args) {
    		Scanner input = new java.util.Scanner(System.in);
    		System.out.print("请输入成绩:");
    		String s = input.next();
    		double d = Integer.parseInt(s);
    		switch((int)(d/10)){
                case 10 :System.out.println("A");break; 
    			case 9 :System.out.println("A");break; 
    			case 8 :System.out.println("B");break;
    			case 7 :System.out.println("C");break;
    			case 6 :System.out.println("D");break;
    			default :System.out.println("E");break; 	
    		}
    		input.close();
    	  }
    }
    

    ⑵.实验程序运行截图如下:
    在这里插入图片描述
    在这里插入图片描述

    三、 实验心得

    **通过本次实验,我成功了解到java语言的分支结构if-else和switch结构。
    if-else结构具有选择功能,通过其判断条件的真假性来选择相应的程序块去执行,同时我们还可以用if-else if -else进行分支嵌套。但是需要注意的是,当if语句块中只有一条语句时,"{}“可以省略。而当将来代码发生变更时很容易发生错误。因此,即便if语句块只有一条语句,也不要省略”{}",养成好的编程习惯很重要。
    switch case结构是一种特殊的分支结构,可以根据一个整数表达式的不同取值,从不同的程序入口开始执行,switch在实现分支功能时,和if-else区别在于其效率更高结构更清晰,可读性更强,但是其使用的具有一定限制条件,并且需要注意break的使用。
    任何复杂的程序逻辑都可以通过"顺序"、“分支”、"循环"三种基本的程序结构实现,本次实验的学习,我受益匪浅。
    **

    展开全文
  • 分支程序设计总结

    2019-11-16 22:24:20
    主要以if,which为主的分支语句。多用于选择或者条件实例。就是将题目条件进行分类处理,在利用if或者switch编程。 如果编程一直不正确,先检查变量,文件名,以及输入输出以及函数格式是否正确 注意关系运算符==...
  • 汇编分支程序设计小实习

    千次阅读 2012-11-07 10:55:32
    1.掌握分支程序设计方法。 2.了解小写字母和大写字母在计算机内的表示方法并显示。 三、实习内容 接收键盘输入字符,将其中的小写字母转换为大写字母并显示。 DATA SEGMENT STR DB "a","B","C","e","T"; ...
  • 摘要:计算机不仅需要进行算术运算,还需要具有逻辑功能,C++中程序的逻辑功能通过分支程序设计来实现。本文主要解决以下几个问题: 1、C++中的关系运算 2、C++中的逻辑运算 3、if语句 4、switch语句
  • 汇编 实验4 分支程序设计

    千次阅读 2020-06-18 14:41:25
    1、编写程序计算|X-Y|的值,其中:X 和 Y 为存放于 X 单元和 Y 单元的 16 位操作数,要求将结果存入 result 单元中。 ┇ MOV AX,X SUB AX,Y JNS NONNEG NEG AX NONNEG: MOV RESULT,AX ┇ 部分程序如上,要求...
  • 分支程序设计 数组ARRAY存放10个字数据,求数组的最大数和最小数,并分别存放在MAX和MIN中 DATAS SEGMENT ARRAY DB 10 DUP(?) MIN DB '9' MAX DB '0' DATAS ENDS STACKS SEGMENT STACKS ENDS CODES ...
  • 实验报告 实验四顺序及分支程序设计一、 实验过程报告:1、 写出第1题的程序代码及 X=1、Y=1、Z=1 时的程序运行结果。set talk offclearinput "x=" to xinput "y=" to yinput "z=" to z? (abs(x-y)+sqrt(abs(x*y*...
  • 汇编语言:顺序和分支程序设计

    千次阅读 2016-10-23 10:45:12
    内容1:编程将内存数据段字节单元INDAT存放的一个数n(假设0≤ n ≤9 ),以十进制形式在屏幕上显示出来。 data segment indat db 8 data ends code segment assume cs:code,ds:data start: mov ax,data ...
  • 2014秋C++ 第8周项目 分支程序设计

    千次阅读 2014-10-13 09:16:43
    课程主页在...阅读并验证阅读下面的两段程序,用“人脑”运行写出输出结果,再在计算机或手机上运行程序,对比自己写出的结果,进行反思。1.#include using namespace std;int main(){
  • 汇编 -- 分支程序设计

    千次阅读 2011-10-08 15:45:55
    2 跳转表法分支程序设计: 间接寻址的无条件转移指令 7.3.1  测试法 测试法   常用影响状态标志的指令:CMP   例子1:求Z=|X-Y| (X,Y有符号数) name example...
  • 1使用if语句设计选择程序:if语句一般分为两种方式:单条件单分支、和单 条件双分支if语句。 1.1单条件单分支的if语句一般语法: If(表达式A){ 语句B; } 语句执行流程:首先执行表达式A,如果表达式A的值非0,...
  • 1.关于 Python 的分支结构,以下选项中描述错误的是 编号 选项 A Python 中 if-elif-else 语句描述多分支结构 B Python 中 if-else 语句用来形成二分支结构 C 分支结构可以向已经执行过的语句部分跳转 ...
  • 分支结构程序设计

    千次阅读 2019-01-24 20:44:56
    分支结构程序设计 前言: 结构化程序设计方法要求一个程序只能有三种基本控制结构组成,任何浮复杂的问题都可以用这三种基本结构去解决。这三种基本机构是顺序结构(上篇博客已经讲解)、选择结构(本篇博客讲解)、...
  • 回到课程主页,链接:C++程序设计课程主页-2012级 本次上机对应的教学内容:第3章 C++程序设计初步中分支程序设计的部分。练习+上机验证【练习1】阅读下列程序,在准备期写出程序的运行结果。上机时运行程序,与你...
  • 汇编语言中常见的形式有:顺序程序设计,分支程序设计,循环程序设计以及子程序设计 1.今天通过实例来详细说明分支程序设计,和循环程序设计 分支程序设计实例 给定一下符号函数: 给定X值,假设为-25,且存放...
  • 分支结构程序设计学习心得 经过了这几个星期的学习,我在学习了顺序结构程序设计之后,又对于分支结构程序设计有了初步的学习。 经过看课本,和老师上课讲的知识,我印象最深的就是“=”不是代表等于而是赋值,这句...
  • 汇编语言分支结构程序设计

    千次阅读 2019-11-28 15:09:28
    汇编语言分支结构程序设计 从基础知识到现在,应该掌握一些基本的汇编语言,下面是两道例题简单介绍、梳理一下汇编分支结构程序代码: 1、内存自BUF单元开始的缓冲区连续存放着10个学生的英文分数,编程序统计其中90...
  • 实验三 分支结构程序设计 1.有下列函数,写一段程序,用cin语句输入x的值,求y的值 x (x<1) y= 2x-1 (1<=x<10) 3x-11 (x>=10) #include <iostream> using namespace std; int main() {...
  • 返回:贺老师课程教学链接 C语言及程序设计初步 【项目1-正差值】给定两个正整数,求出两数的正差值并输出。样例输入 样例输出7 10 312 7 5【项目2-三数最大值】输入3个整数,输出其中的最大值。提示:求出...
  • c语言 实验报告:分支结构程序设计

    千次阅读 2019-05-05 21:27:41
    实现输入一个整数判断是奇数还是偶数,运行结果如图1所示 #include<stdio.h> #include<math.h> int main (void) { int a; scanf("%d",&a); if(a%2==0) { printf("even");......

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 157,088
精华内容 62,835
关键字:

分支程序设计