首页 > 编程语言 >汇编语言程序设计实验五 条件转移指令

汇编语言程序设计实验五 条件转移指令

时间:2024-04-08 16:58:26浏览次数:21  
标签:输出 DL 字符 汇编语言 程序 MOV 指令 程序设计 ASCII

  • 实验目的和要求

(1)      编写实验任务要求的两个程序。

(2)      写出调试以上程序,即修改程序参数,检查结果的操作方法。

(3)      熟悉源程序汇编、连接命令的使用方法即要回答的内容。

  • 实验环境

DOSBOX

  • 实验内容与过程

验证以下程序

16进制数化ASCII码的一般方法(显示内存内容)

1)用A命令在100H处键入下列程序:

MOV   SI,0

MOV   BL,10

LOP:  MOV   DL,[SI]

MOV    CL,4

SHR    DL,CL

CMP    DL,0A

JC J1

ADD   DL,7

J1:  ADD  DL,30

MOV   AH,2

INT   21

MOV   DL,[SI]

AND   DL,0F

CMP   DL,0A

JC J2

ADD   DL,7

J2:  ADD  DL,30

MOV   AH,2

INT   21

MOV   DL,20

MOV   AH,2

INT   21

INC   SI

DEC   BL

JNZ   LOP

INT   20

2)用N,W命令将此程序用CC.COM文件名存入磁盘。

3)用Q命令退出DEBUG。

    4)在DOS命令状态下直接运行CC.COM命令文件,应在屏幕上显示出内存从0000H开始的16个字节的内容,若有错误,用DEBUG检查之。

  • 实验结果与分析

1)用EDIT或其它编辑软件,编写.ASM源程序,

2)对其进行汇编及连接,产生.EXE文件。

3)对.EXE文件进行调试运行。

a.用DEBUG调试运行。

b.键入不同的字符,分别进行调试。

c.在MS-DOS下运行这两个.EXE文件。

1.自编程序:修改实验准备程序(二),使除了以16进制数形式显示内存内容外,还能在其右边显示该16进制码所对应的ASCII字符,07-0D的控制字符用'.'代替。

编译程序的过程:

程序运行后的结果:

分析:

    该汇编程序的功能是将堆栈段中从0开始的十六进制数字转换为十进制数字并输出,每个数字之间用一个空格分隔开。其中,每个十六进制数字占一字节,所以总共会输出16个数字。

程序执行时,首先将数据段的地址移到AX寄存器中,再将其赋值给DS寄存器,以便于访问数据段中的变量。然后将SI寄存器置为0,BL寄存器置为10H,即16,用于循环计数。接下来进入循环LOP中,在循环中首先读取SI指向的堆栈段中的数据,并右移四位,将其高四位相应转换为十进制数字并输出。然后再按位与0FH,得到其低四位,同样转换为十进制数字并输出。如果高四位或低四位在转换后大于9,就加上7H(即十进制7),再输出。每输出一个数字后,都会输出一个空格符。最后将SI指针自加,BL计数器自减,如果计数器不为0,则继续循环。当计数器减为0时,表示所有数据都已转换输出,程序跳转到结束部分,并通过21H中断调用DOS功能,退出程序。

    可以看到运行结果中输出了十六进制的字符并在其右边输出了对应的ASCII字符。因为是在dos下执行,数据段地址与debug下不同,所以输出的数据不同,但通过查ASCII表,确定其对应字符正确。  

2. BUFX、BUFY和BUFZ是3个有符号的十六进制数,编写一个比较相等关系的程序:

       1)如果这3个数都不相等,则显示0

       2)如果这3个数中有两个数相等,则显示1

       3)如果这3个数都相等,则显示2

编译程序的过程:

程序运行的结果:

分析:

该汇编程序的功能是输入三个字符,比较它们的ASCII码值大小,并输出它们的大小关系。具体来说,程序将输入的三个字符分别存储在寄存器bh、bl和dh中,然后通过比较它们的值大小,将结果存储在寄存器dl中,最后输出寄存器dl的值。

    程序的运行结果取决于输入的三个字符的值。如果它们的值满足bh≤bl≤dh,则程序输出字符'0'(ASCII码为30h);否则,程序输出字符'1'(ASCII码为31h)。如果输入的字符有重复,则程序会在比较时自动跳过相同的字符。如果输出的结果小于字符'0'(ASCII码为30h),则程序会自动将其替换为字符'2'(ASCII码为32h)。

流程图:

  • 实验心得

在这次实验中,我学习了条件转移指令在汇编语言中的应用。条件转移指令是一种非常重要的指令类型,在程序执行过程中可以根据条件判断选择不同的执行路径,从而实现灵活的程序控制和逻辑判断。

在实验中,我首先了解了条件转移指令中不同的条件码,包括零标志位、进位标志位、符号标志位等等。并学习了如何通过CMP指令进行比较操作,以及如何根据比较结果使用条件转移指令跳转到不同的代码块执行。

通过实验,我深入了解了如何使用条件转移指令进行逻辑判断和程序控制,并且通过编写实际的汇编代码进行练习,加深了对汇编语言的理解和运用能力。此外,在实验过程中我还发现了一些注意事项,如在使用条件转移指令时需要注意空间限制等问题,这些都让我对汇编语言的应用更加熟练和自信。

    总之,这次实验让我深入理解了条件转移指令在汇编语言中的应用,并且通过实际编写代码进行了练习,受益匪浅。在今后的学习和工作中,我将继续深入学习汇编语言的相关知识,不断提高自己的能力和水平。

标签:输出,DL,字符,汇编语言,程序,MOV,指令,程序设计,ASCII
From: https://blog.csdn.net/qq_41628475/article/details/137514610

相关文章

  • C语言程序设计-实验报告4
    实验项目名称:选择结构程序设计实验项目类型:验证性实验日期:2024年4月1日一、实验目的1.在熟练掌握if语句和switch语句的基础上,能灵活使用if语句和switch语句进行选择结构的程序设计2.学习调试程序二、实验硬、软件环境Windows计算机、Devc6.0三、实验内容及步骤实验......
  • 指令集架构
    英文缩写:ISA指令集架构,InstructionSetArchitecture CISC复杂指令集计算机,ComplexInstructionSetComputer RISC精简指令集计算机,ReducedInstructionSetComputer EPIC显性并行指令计算,ExplicitlyParallelInstructionComputingMMX多媒体扩展指令集,MultiMediaExtended......
  • CPU怎么实现LOCK指令
    概述在CPU实现LOCK指令时,需要考虑到多核CPU的并发访问问题。一种常用的实现方式是在CPU内部添加一个锁控制单元,该单元负责控制对共享资源的访问锁控制单元通常由几个逻辑门组成在实现基于总线的锁机制时,锁控制单元可以由一个锁定信号线和一个锁定控制器组成当一个CPU需......
  • 前端【VUE】02-vue指令【v-html 、v-show、 v-if 、v-else、v-on、v-bind、v-for、v-m
    Vue指令①v-html1<!DOCTYPEhtml>2<htmllang="en">3<head>4<metacharset="UTF-8">5<metahttp-equiv="X-UA-Compatible"content="IE=edge">6<metaname="view......
  • node.js常用指令
    1、node:启动Node.jsREPL(交互式解释器)。node2、node[文件名]:执行指定的JavaScript文件。nodeapp.js3、npminit:初始化一个新的Node.js项目,生成package.json文件。此命令会创建一个package.json文件,其中包含项目的名称、版本、描述等信息,并且可以选择添加一些默......
  • 第4章 汇编语言程序设计
    第4章汇编语言程序设计汇编语言语句格式一、指令格式[标号:]助记符操作数1,操作数2[;注释]标号:由1-8个字符组成,且第一个字符必须是字母。用于指示指令的地址。操作数:可使用二(B结尾)、十(D结尾或省略)、十六(H结尾)进制数和字符串(加"")注释:为不可执行部分,对程序加以说明。二、......
  • .NET Emit 入门教程:第六部分:IL 指令:5:详解 ILGenerator 指令方法:创建实例指令
    前言:上上篇介绍了 IL 指令的分类以及参数加载指令,该加载指令以 Ld开头,将参数加载到栈中,以便于后续执行操作命令。上一篇介绍参数存储指令,其指令以St开头,将栈中的数据,存储到指定的变量中,以方便后续使用。本篇将介绍创建实例指令,其指令以New开头,用于在运行时动态生成并初......
  • Calandar(2019山东省大学生程序设计竞赛)
    #include<bits/stdc++.h>#defineendl'\n'usingll=longlong;typedefunsignedlonglongull;usingnamespacestd;voidGordenGhost();map<string,int>mp;signedmain(){#ifdefGordenfreopen("in.txt","rt"......
  • Vue 有哪些常用的指令
    目录1.指令v-html1.1.作用1.2.语法1.3.练习 2. 指令v-show2.1.作用2.2.语法3.原理4.场景 3.指令v-if3.1.作用3.2.语法3.3.原理3.4.场景 4. 指令v-else与v-else-if4.1.作用4.2.语法4.3.注意4.4.使用场景 5. 指令v-on5.1.作......
  • Docker常用指令
    Docker镜像常用命令搜索镜像dockersearchjava下载镜像dockerpulljava:8查看镜像版本dockersearch由于dockersearch命令只能查找出是否有该镜像,不能找到该镜像支持的版本,需要通过DockerHub来搜索支持的版本。进入DockerHub的官网,地址:https://hub.dock......