当前位置:文档之家› 汇编语言郑晓薇 实验内容整理

汇编语言郑晓薇 实验内容整理

汇编语言郑晓薇 实验内容整理

第5章实验:

用查表的方法将内存单元中的字用二进制和十六进制显示出来。

第6章实验:

1、分别统计3个班级中某科成绩优秀的人数和不及格的人数。

2、用两个数组分别存放每班优秀的成绩和不及格的成绩。

第7章实验:

1、实现两个键入的十进制数相减的运算,并显示十进制结果。

2、键入一个十六进制数,求其真值(用十进制显示,负数前加负号“-”)

第8章实验:

从键盘多次输入十进制数,若是正数则跳过,若是负数,求出反码,并用二进制显示。

第9章实验:

改写60H号中断。要求触发60H号中断时,显示彩色字符串“HELLO WORLD!”。

汇编语言实验2

计算机工程系实验报告 课程名称:汇编语言 实验项目名称:用机器指令和汇编语言指令编程 班级:15级计科4班姓名:梁红梅学号:15091413 一、实验目的: 1.学习Debug中D命令的使用方法,掌握查看指定内存单元的内容的指令,其中本实验中 主要掌握“d段地址:偏移地址”的格式; 2.了解Debug 中D命令程序的执行者:CPU,了解D命令的执行过程; 3.掌握CPU在访问内存单元时的主要过程; 4.学习怎样利用在Debug中cs、ds、ss、es这4个段寄存器,简化debug命令格式。 二、实验要求: 使用Debug,将下面的程序段写入内存,逐条执行,根据指令执行后的实际运行情况填空。Mov ax,ffff Mov ds,ax Mov ax,2200 Mov ss,ax Mov sp,0100 Mov ax,[0] ;ax= Add ax,[2] ;ax= Mov bx,[4] ;bx= Add bx,[6] ;bx= Push ax ;sp= 修改的内存单元的地址是内容为 Push bx ;sp= 修改的内存单元的地址是内容为 Pop ax ;sp= ;ax= Pop bx ;sp= ;ax= Push [4] ;sp= 修改的内存单元的地址是内容为 Push [6] ;sp= 修改的内存单元的地址是内容为

三、实验数据记录: 1.进入Debug后使用-a命令将程序写入内存 2.通过使用-t命令将写入内存的程序逐一执行,直到命令执行完毕

三、实验结果及分析: 1.mov ax,[0] 执行完成后 ax=C0EA; 2.add ax,[2]执行完成后ax=C0FC; 3.mov bx,[4] 执行完成后 bx=30F0; 4.add bx,[6]执行完成后 bx=6021; 5.push ax 执行完成后 sp= 00FE 修改的内存单元的地址是 2200:00FE 内容为C0FC 6.push bx 执行完成后 sp= 00FC 修改的内存单元的地址是 2200:00FC 内容为6021

计算机组成原理实验1-汇编语言实验

微处理器与接口技术 实验指导

实验一监控程序与汇编语言程序设计实验 一、实验要求 1、实验之前认真预习,明确实验的目的和具体实验内容,设计好主要的待实验的程序,做好实验之前的必要准备。 2、想好实验的操作步骤,明确通过实验到底可以学习哪些知识,想一想怎么样有意识地提高教学实验的真正效果。 3、在教学实验过程中,要爱护教学实验设备,认真记录和仔细分析遇到的现象与问题,找出解决问题的办法,有意识地提高自己创新思维能力。 4、实验之后认真写出实验报告,重点在于预习时准备的内容,实验数据,实验过程、遇到的现象和解决问题的办法,自己的收获体会,对改进教学实验安排的建议等。善于总结和发现问题,写好实验报告是培养实际工作能力非常重要的一个环节,应给以足够的重视。 二、实验目的 【1】学习和了解TEC-XP16教学实验系统监控命令的用法; 【2】学习和了解TEC-XP16教学实验系统的指令系统;

【3】学习简单的TEC-XP16教学实验系统汇编程序设计。 三、实验注意事项 (一)实验箱检查 【1】连接电源线和通讯线前TEC-XP16实验系统的电源开关一定要处于断开状态,否则可能会对TEC-XP16实验系统上的芯片和PC机的串口造成损害。 【2】五位控制开关的功能示意图如下: 【3】几种常用的工作方式【开关拨到上方表示为1,拨到下方为0】 (二)软件操作注意事项 【1】用户在选择串口时,选定的是PC机的串口1或串口2,而不是TEC-XP16实验系统上的串口。即选定的是用户实验时通讯线接的PC机的端口; 【2】如果在运行到第五步时没有出现应该出现的界面,用户需要检查是不是打开了两个软件界面,若是,关掉其中一个再试; 【3】有时若TEC-XP16实验系统不通讯,也可以重新启动软件或是重新启动PC再试; 【4】在打开该应用软件时,其它的同样会用到该串口的应用软件要先关掉。

高级语言、汇编语言及机器语言的区别

计算机语言具有高级语言和低级语言之分。而高级语言又主要是相对于汇编语言而言的,它是较接近自然语言和数学公式的编程,基本脱离了机器的硬件系统,用人们更易理解的方式编写程序。 低级语言分机器语言(二进制语言)和汇编语言(符号语言),这两种语言都是面向机器的语言,和具体机器的指令系统密切相关。机器语言用指令代码编写程序,而符号语言用指令助记符来编写程序。 高级语言并不是特指的某一种具体的语言,而是包括很多编程语言,如目前流行的java,c,c++,C#,pascal,python,lisp,prolog,FoxPro,VC,易语言,中文版的C语言习语言等等,这些语言的语法、命令格式都不相同。 高级语言与计算机的硬件结构及指令系统无关,它有更强的表达能力,可方便地表示数据的运算和程序的控制结构,能更好的描述各种算法,而且容易学习掌握。但高级语言编译生成的程序代码一般比用汇编程序语言设计的程序代码要长,执行的速度也慢。所以汇编语言适合编写一些对速度和代码长度要求高的程序和直接控制硬件的程序。高级语言、汇编语言和机器语言都是用于编写计算机程序的语言。 高级语言程序“看不见”机器的硬件结构,不能用于编写直接访问机器硬件资源的系统软件或设备控制软件。为此,一些高级语言提供了与汇编语言之间的调用接口。用汇编语言编写的程序,可作为高级语言的一个外部过程或函数,利用堆栈来传递参数或参数的地址。 机器语言(machine language)是一种指令集的体系。这种指令集,称机器码(machine code),是电脑的CPU可直接解读的数据。机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指指令系统 它是计算机的设计者通过计算机的硬件结构赋予计算机的操作功能。机器语言具有灵活、直接执行和速度快等特点。 一条指令就是机器语言的一个语句,它是一组有意义的二进制代码,指令的基本格式如,操作码字段和地址码字段,其中操作码指明了指令的操作性质及功能,地址码则给出了操作数或操作数的地址。 用机器语言编写程序,编程人员要首先熟记所用计算机的全部指令代码和代码的涵义。手编程序时,程序员得自己处理每条指令和每一数据的存储分配和输入输出,还得记住编程过程中每步所使用的工作单元处在何种状态。这是一件十分繁琐的工作。编写程序花费的时间往往是实际运行时间的几十倍或几百倍。而且,编出的程序全是些0和1的指令代码,直观性差,还容易出错。除了计算机生产厂家的专业人员外,绝大多数的程序员已经不再去学习机器语言了。 汇编语言(AssemblyLanguage)是面向机器的程序设计语言。在汇编语合中,用助记符(Memoni)代替操作码,用地址符号(Symbol)或标号(Label)代替地址码。这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。于是汇编语言亦称为符号语言。使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理系统软件。汇编程序把汇编语言翻译成机器语言的过程称为汇编.

汇编语言循环程序实验报告

东北大学 计算机硬件技术基础实验报告 一、实验目的 (1) 加深对循环结构的理解; (2) 掌握循环程序的设计方法; (3) 熟练掌握DEBUG的常用命令,学会用DEBUG调试程序。 二、实验内容 1.已知以BUF为首地址的字存储区中存放着8个有符号二进制数,是编写程序将其中大于等于0的数依次送BUF1为首地址的字存储区中,小于0的数依次送以BUF2为首地址的字存储区中。同时将大于等于0的数的个数送A字变量,将小于0数的个数送B字变量。 2.设STR字符串是以0结尾。试编写一个把字符串中的所有大写字母改为小写字母的程序并将转换后的字符串显示输出。 3.试编程从自然数1开始累加,直到累加和大于5050为止,统计被累加的自然数的个数,并把统计的个数送入COUNT单元,累加和送入TOTAL单元。 三、算法描述流程图 实验内容1、2、3的流程图分别为图1、图2、图3。

图 1 图 2 图3

四、实验步骤 1.已知以BUF为首地址的字存储区中存放着8个有符号二进制数,是编写程序将其中大于等于0的数依次送BUF1为首地址的字存储区中,小于0的数依次送以BUF2为首地址的字存储区中。同时将大于等于0的数的个数送A字变量,将小于0数的个数送B字变量。 1)输入源程序: DATA SEGMENT BUF DW 23,123,-12,-210,45,0,90,-453 BUF1 DW 8 DUP(0) BUF2 DW 8 DUP(0) A DW ? B DW ? DATA ENDS CODE SEGMENT ASSUME CS: CODE, DS: DATA START: MOV AX, DATA MOV DS, AX LEA BX, BUF LEA SI, BUF1 LEA DI, BUF2 MOV A,0 MOV B,0 MOV CX,8 L0: MOV AX,[BX] CMP AX,0 JGE L1 MOV [DI],AX ADD DI,2 INC B JMP NEXT L1: MOV [SI],AX ADD SI,2 INC A NEXT: ADD BX,2 LOOP L0 MOV AH, 4CH INT 21H CODE ENDS END START 2)运行程序。

汇编实验报告2-1

《汇编语言程序设计》第二次上机2-1实验报告 院系:计算机科学与技术 专业:信息安全 班级:0903班 姓名: 学号: 时间:2011-6-6 地点:南一楼808

一、实验目的 (3) 二、题目与实验要求 (3) 三、寄存器分配和变量定义说明: (3) 四、流程图 (5) 五、源程序及注释 (7) 六、实验步骤 (13) 七、实验记录 (13) 八、体会 (16)

一、实验目的 1、加深对一些常用的汇编指令的理解; 2、加深对常用DOS功能调用指令的理解; 3、进一步熟悉TD的使用。 二、题目与实验要求 1、《80X86汇编语言程序设计》教材中 P95的 3.7 题。 要求:(1)将该题改成一完整的程序(可以省略实验报告中的程序框图)。 (2)请事先指出依次执行每条程序指令后(AX)的内容。 (3)请事先指出执行ADD、SUB、SAL、RCL指令后,CF、ZF的值。 (4)记录上机执行后与(2)、(3) 中对应的内容。 2、《80X86汇编语言程序设计》教材中 P94的 3.3 题。 要求:(1)将该题改成一完整的程序,其中数据段的定义为习题3.1中的数据段(可以省略实验报告中的程序框图)。 (2)请事先画出数据段中数据的存储形式。 (3)请事先指出依次执行每条程序指令后相应寄存器中的内容。 (4)请事先给出各调指令在汇编后的形式。 (5)比较上机执行后,看到的各项内容是否与(2)、(3) ,(4)内容一致。 不一致的应分析错误原因。 3、《80X86汇编语言程序设计》教材中 P96的 3.11 题。 要求:(1)请事先指出程序运行结束后,显示器显示的内容。 (2)若将NUM的定义改成如下形式: NUM DB 35 显示的结果是什么? (3)若将NUM的定义改成如下形式: NUM DB 59 显示的结果是什么? (4)指出程序运行后看到的结果,若不一致,分析产生错误的原因。 4. 从键盘输入两串字符分别存入BUF1和BUF2区,比较两串内容是否相等,相等显示“MATCH !”, 不相等显示“NO MATCH !”。 要求:(1) 使用10号功能调用输入字符串; (2) 使用9号功能调用输出提示信息; 提示:先比较长度是否相等。 5 选做题 输入一个无符号的数字串,然后以16进制形式显示出串的值。 例如: INPUT A NUMBER : 59 RESULT : 3BH 其中下划线上的内容(59)为程序运行时输入的串。 三、寄存器分配和变量定义说明:

汇编语言实验

汇编语言程序设计 实验一DEBUG 程序使用技巧 学号:姓名: 1.寄存器和内存 开始Debug 程序。输入“Q ” 退出程序。再次启动Debug。 输入“r ”来显示CPU的当前状态和寄存器中的当前内容。 输入“r AX ”和“1234”,_______寄存器中的内容变为1234。 输入“r DS ”和“2000”,_______寄存器中的内容变为2000。 输入“d DS:1000 ”来显示数据段中80H 字节数据,把数据抄在这里: 输入“f DS:1000 1100 77 ”再显示一次这80H 字节。判断这条指令的作用是什么? 再输入“d 2000:1000 ”来显示数据段中80H 字节数据。观察与前面的数据有无不同。 输入“d 1900:0100 ”和“d 1ff0:0100 ”来显示两个存储段中的内容。比较其中2000:0000 段中的数据。相同段落中的数据相同么?根据你的观察,得出结论,是否程序员可以用不同的段起始地址和偏移量组合,把不容内容存入相同的内存段中。

2.输入机器码,使用单步和断点 退出Debug,再重新启动Debug。 输入“r ”观察CPU 的状态,下一条指令是什么? 使用两种方式输入一段程序,第一种方式:直接输入机器码。 输入“u ”来显示程序段中的指令序列。然后输入“d CS:100 ” 来显示代码段中的数据。观察显示内容。 “u CS:100 106 ”做反汇编,就是显示出汇编语句。将这几句汇编语句记录下来: 使用输入“r ”观察CPU 的状态,使用“t ”来跟踪程序,直至最后一条指令执行完毕。注意,跟踪程序前,要让IP 寄存器中的值是100H。一直监视AX 和IP 寄存器的内容变化,尤其是标志位的变化。

汇编语言基础知识

汇编语言基础知识 汇编语言是直接在硬件之上工作的编程语言,首先要了解硬件系统的结构,才能有 效地应用汇编语言对其编程,因此,本章对硬件系统结构的问题进行部分探讨,首先介绍了计算机的基本结构、Intel 公司微处理器的发展、计算机的语言以及汇编语言的特点,在此基础上重点介绍寄存器、内存组织等汇编语言所涉及到的基本知识。 1.1 微型计算机概述 微型计算机由中央处理器(Central Processing Unit ,CPU )、存储器、输入输出接口电路和总线构成。CPU 如同微型计算机的心脏,它的性能决定了整个微型计算机的各项关键指标。存储器包括随机存储器(Random Access Memory ,RAM )和只读存储器(Read Only Memory ,ROM )。输入输出接口电路用来连接外部设备和微型计算机。总线为CPU 和其他部件之间提供数据、地址和控制信息的传输通道。如图1.1所示为微型计算机的基本结构。 外部设备存储器输入输出接口电路中央处理器 CPU 地址总线 数据总线 控制总线 图1.1 微型计算机基本结构 特别要提到的是微型计算机的总线结构,它使系统中各功能部件之间的相互关系变 为各个部件面向总线的单一关系。一个部件只要符合总线结构标准, 就可以连接到采用这种总线结构的系统中,使系统功能得到扩展。 数据总线用来在CPU 与内存或其他部件之间进行数据传送。它是双向的,数据总线 的位宽决定了CPU 和外界的数据传送速度,8位数据总线一次可传送一个8位二进制数据(即一个字节),16位数据总线一次可传送两个字节。在微型计算机中,数据的含义是广义的,数据总线上传送的不一定是真正的数据,而可能是指令代码、状态量或控制量。 地址总线专门用来传送地址信息,它是单向的,地址总线的位数决定了 CPU 可以直接寻址的内存范围。如 CPU 的地址总线的宽度为N ,则CPU 最多可以寻找2N 个内存单 元。

《汇编语言》问题3.10解析

1、如果要在10000H处写入字型数据2266H,可以用以下的代码完成: mov ax,1000H mov ds,ax mov ax,2266H mov[0],ax 补全下面的代码,使它能够完成同样的功能:在如果要在10000H处写入字型数据2266H。 要求:不能使用“mov内容单元,寄存器”这类命令。 _____________ _____________ _____________ mov ax,2266H push ax 解析:大家看,如何实现在10000H处写入字型数据2266H? 也就是说要在SS:SP(1000:0)指向的栈顶处将字型数据2266H写入。 那我们在10000H处写入字型数据2266H前的栈顶指向肯定SS:SP(1000:2),即为我需要初始化栈时设定的栈顶。 因此,完成的程序如下。 mov ax.1000H mov ss,ax mov sp,2 mov ax,2266H push ax 2、如果要在1000H处读取字型数据2266H,可以用以下的代码完成: mov ax,1000H mov ds,ax mov ax,2266H mov ax,[0] 补全下面的代码,使它能够完成同样的功能:在如果要在10000H处读取字型数据2266H。 要求:不能使用“mov内容单元,寄存器”这类命令。 _____________ _____________ _____________ mov ax,2266H pop ax 解析:如何在10000H处读取字型数据2266H? 也就是说要在SS:SP(1000:0)指向的栈顶处将字型数据2266H读取。 那我们在10000H处读取字型数据2266H前的栈顶指向肯定SS:SP(1000:0),即为我需要初始化栈时设定的栈顶。 因此,完成的程序如下。 mov ax.1000H mov ss,ax mov sp,0 mov ax,2266H pop ax 总结:写入数据的话,写入数据时的栈顶和当前栈顶(即写入数据前的栈顶)不一样;读取数据的话,读取数据时的栈顶和当前栈顶(即读取数据前的栈顶)一样。

大学课程汇编语言的实验报告

实验报告 实验课程: 学生姓名: 学号: 专业班级:电气信息类III班 2011年12月20日

目录 (1)汇编语言程序上机过程 (2) (2)字符串处理程序实验 (6) (3)子程序实验 (13) (4)中断程序实验 (21) (5)C++调用汇编子程序 (25)

南昌大学实验报告 ---(1)汇编语言程序上机过程学生姓名:学号:专业班级: 实验类型:□验证■综合□设计□创新实验日期:2011.11.12/13实验成绩:一、实验目的 熟练掌握汇编语言程序的编辑、调试和运行的过程和方法。了解汇编语言程序的汇编、运行环境。 二、实验内容 1.掌握常用的编辑工具软件(如WORD、EDIT)、MASM和LINK的使用; 2.伪指令:SEGMENT,ENDS,ASSUME,END,OFFSET,DUP; 3.利用的INT21H的1号功能实现键盘输入的方法; 三、实验环境 PC微机 DOS操作系统或Windows操作系统 MASM.EXE,LINK.EXE,https://www.doczj.com/doc/f216305356.html,或宏汇编集成环境 四、实验要求 1.仔细阅读有关伪指令SEGMENT,ENDS,ASSUME,END,OFFSET,DUP的内容; 2.了解利用的INT21H的1号功能实现键盘输入的方法,了解.EXE文件和.COM文件的区别及用INT21H4C号功能返回系统的方法; 3.阅读下面程序段。 五、主要实验步骤 程序: data segment message db'This is a sample program of keyboard and disply' db0dh,0ah,'Please strike the key!',0dh,0ah,'$' data ends stack segment para stack'stack' db50dup(?) stack ends code segment assume cs:code,ds:data,ss:stack start:mov ax,data mov ds,ax mov dx,offset message mov ah,9 int21h again:mov ah,1

汇编语言学习知识程序设计实验

目录 目录 (1) 实验一利用DEBUG熟悉常用指令的使用 (2) 一、实验目的 (2) 二、示例 (2) 三、实验题 (2) 实验二汇编程序和连接程序的使用 (6) 一、实验目的。 (6) 二、示例。 (6) 三、实验题。 (8) 实验三顺序结构程序设计 (11) 一、实验目的 (11) 二、示例 (11) 三、实验题 (12) 四、实验报告 (15) 实验四循环结构程序设计 (16) 一、实验目的 (16) 二、示例 (16) 三、实验题 (18) 实验五分支结构程序设计 (21) 一、实验目的 (21) 二、示例 (21) 三、实验题 (22) 实验六子程序设计 (29) 一、实验目的 (29) 二、实验题 (29)

实验一利用DEBUG熟悉常用指令的使用 一、实验目的 熟悉指令系统,掌握常用指令的用法;通过实验加深对各种寻址方式的理解;能熟练使用DEBUG中的命令对指令进行反汇编,观察并了解机器代码。 二、示例 请分别用一条汇编语言指令完成如下功能:(过程略)。 1.用寄存器BX和SI的基址变址寻址方式把存储器的一个字节与AL寄存器的内容相加,并把结果送到AL中。 ADD AL,[BX][SI] 2.用位移量为0520H的直接寻址方式把存储器中的一个字与3412H相加,并把结果送回该存储单元。 ADD WORF PTR [0520H],3412H 三、实验题 1.调试、验证下列指令的结果,已知(DS)=2000H,(BX)=0100H,(SI)=0002H,(BP)=0200H,(SS)=2300H,(20100)=12H,(20101)=34H,(20102)=56H,(20103)=78H,(21200)=2AH,(21201)=4CH,(21202)=B7H,(21203)=65H,(23204)=88H,说明各指令执行完后AX寄存器的内容。要求输入指令,相应存储单元的内容要事先设置,单步 P执行,观察执行结果。 (设置存储器的值)

汇编语言(第2版)王爽著 课后实验报告详解

汇编语言实验报告 : 班级学号 学生姓名 提交日期 成 绩

实验1-1如下: 用E命令将指令写入内存:

用A命令将指令写入内存: 实验1-2代码如下: 用a命令在2000:0000处写如要写如的代码,然后用R命令来修改CS为2000,IP修改为0,然后用T命令执行,直到AX中的值为10,因为是默认为十六进制,所以ax中的0010实际代表十进制的16。如图:

实验1-3: 用D 命令输入内存fff0h~fffffh,则可看到:

生产日期为06/15/09在地址为FFFF5~FFFF12处,现在用E命令随便修改一下有: 在window7下虚拟的dos中可以改,但如果重新打开dos中的debug 则日期任然不会改变,因为那是ROM。 实验1-4代码如下:

内存地址为B800:0开始的为显存,是RAM,可以改变其值来在屏幕中显示,其中这一个字符占两个字节,前一个(低)为字符的ASCII 码,后一个(高)为要显示的颜色,内存B800:0和B800:1这两个字节对应着屏幕中的第一个字符的位置,依次类推,每个屏幕的行有80个字符,对应的内存占160个字节 实验2-1:(按实验结果填空) Mov ax,ffff Mov ds,ax Mov ax,2200 Mov ss,ax Mov sp,0100 Mov ax,[0] ;ax=5BEA Add ax,[2] ;ax=5CCA Mov bx,[4] ;bx=30F0 Add bx,[6] ;bx=6026 Push ax ;sp=00FE; 修改的内存单元的地址是2200:00FE 内容是5CCA Push bx ;sp=00FC; 修改的内存单元的地址是2200:00FC内容是6026 Pop ax ;sp=00FE; ax=6026. Pop bx ;sp=0100; bx=.5CCA Push [4] ;sp=00FE; 修改的内存单元的地址是2200:00FE内容是30F0 Push [6] ;sp=00FC; 修改的内存单元的地址是2200:00FC内容是2F36 实验截图如下:

汇编语言实验

实验一 DEBUG命令实验 一.实验目的: 掌握DEBUG 的基本命令及其功能 二.实验内容: DEBUG是专门为汇编语言设计的一种调试工具,它通过步进,设置断点等方式为汇编语言程序员提供了非常有效的调试手段。 1、DEBUG的主要命令 (1)汇编命令A,格式为:-A[地址]; 该命令从指定地址开始允许输入汇编语句,把它们汇编成机器代码相继存放在从指定地址开始的存储器中。 例如: -a 136B:0100 mov ax,100 136B:0103 mov bx,200 136B:0106 mov cx,300 136B:0109 mov dx,400 136B:010C - (2)反汇编命令U,有两种格式: 1)-U[地址] 该命令从指定地址开始,反汇编32个字节,若地址省略,则从上一个U命令的最后一条指令的下一个单元开始显示32个字节。 例如: -u

2)-U范围 该命令对指定范围的内存单元进行反汇编, 例如: (3)运行命令G,格式为: -G [=地址1][地址2[地址3。。。]] 其中地址1规定了运行起始地址,后面的若干地址均为断点地址。 例如: (4)追踪命令T,有两种格式: 1)逐条指令追踪:-T[=地址];该命令从指定地址起执行一条指令后停下来,显示寄存器内容和状态值。

2)多条指令追踪:-T[=地址][值],该命令从指定地址起执行n条命令后停下来,n由[值]确定。 (5)显示内存单元内容的命令D,格式为:-D[地址]或-D[范围] (6)修改内存单元内容的命令E,它有两种格式: 1)用给定的内容代替指定范围的单元内容:-E地址内容表 例如:-E 2000:0100 F3 “XYZ” 8D

汇编语言上机实验十2015李中

实验十输入/输出与中断实验 一、实验目的 1.掌握输入/输出与中断指令的使用方法; 2.掌握中断向量表的结构及使用方法; 3.掌握INT 指令的使用方法; 4.掌握BIOS 中断功能调用的使用方法; 5.掌握DOS 功能调用的使用方法。 二、实验要求 1.了解INT 指令与CALL 指令的不同点; 2.会用DEBUG 观察中断向量表; 3.会用DEBUG 的T 和P 命令执行INT 指令; 4.会用INT 10H、INT 16H 编制程序; 5.会用DOS 功能调用的02H、09H 功能编制程序 三、实验题目 1. 编制程序。利用IBM PC BIOS 功能调用的INT 16H 功能,编制一个从键盘上接收若干个字符串的程序。 2.编制程序。利用IBM PC BIOS 功能调用的INT 10H 功能,编制一个在屏幕上指定位置显示若干个字符串的程序。 四、实验思路 1调用INT16号功能实现输入字符,并且用int10号功能实现显示字符,并且将字符保存到data开始的内存单元中,如果不是ctrl+c的话循环输入输出,是的话结束程序.

2用INT10中03功能读出当前光标位置,然后保存当前的光标位置,只有用INT10中的02号功能设置要显示字符的位置,调用INT10的0E号功能循环显示字符,遇到结尾符号0的时候结束输出,然后恢复光标位置,调用INT10的1号功能恢复光标类型,用INT10的2号功能设置光标位置,使光标位置回到起点,结束程序. PUSH DX;保存当前光标位置 PUSH CX;保存光标类型 MOV DX,1020H;设置光标位置 MOV AH,02H INT 10H;设置光标位置 五、实验程序 1 DSEG SEGMENT;数据段开始 DATA DB 80 DUP (0);存储数据的单元 DSEG ENDS ;数据段结束 CSEG SEGMENT;代码段开始 ASSUME CS:CSEG,DS:DSEG;段假设 START: MOV AX,DSEG MOV DS,AX;段地址初始化

第1章汇编语言基础知识

第1章汇编语言基础知识 本章介绍学习汇编语言程序设计所必须具备的基本知识,主要包括汇编语言的基本概念及计算机中数据的表示方法。通过本章的学习,读者应能了解汇编语言概念及其使用的进位计数制、不同进位计数制之间的转换、计算机编码以及基本数据类型。 本章内容要点: 汇编语言的概念 汇编语言的特点 不同进位计数制之间的转换 计算机编码 1.1汇编语言概述 1.1.1 汇编语言基本概念 自然语言是具有特定语音和语法等规范的、用于人类表达思想并实现相互交流的工具。人与人之间只有使用同一种语言才能进行直接交流,否则就必须通过翻译。要使计算机为人类服务,人们就必须借助某种工具,告诉计算机“做什么”甚至“怎么做”,这种工具就是程序设计语言。 程序设计语言通常分为三类:机器语言、汇编语言和高级语言。而前两种语言与机器密切相关,统称为低级语言。 1.机器语言 机器语言是计算机第一代语言,它全部由0、1代码组成,是能够直接被机器所接受的语言,是最底层的计算机语言。 机器语言不容易记忆,程序编写难度大,调试修改繁琐,且不易移植,现在程序员很少用。但机器语言执行速度最快,它是一种面向机器的程序设计语言。 2.汇编语言 为了克服机器语言难以记忆、表达和阅读的缺点,人们采用具有一定含义的符号作为助忆符,用指令助忆符、符号地址等组成的符号指令称为汇编格式指令(或汇编指令)。例如,用ADD表示加法指令,SUB表示减法指令,MOV表示传送指令等。汇编语言是汇编指令集、伪指令集和使用它们规则的统称。伪指令的概念将在第4章介绍。 汇编语言比机器语言直观,容易记忆和理解,用汇编语言编写的程序也比机器语言程序易读、易检查、易修改。对于不同的计算机,针对同一问题所编写的汇编语言源程序是互不通用的。

汇编语言——输入输出程序设计实验

实验四输入/输出实验(2学时综合性实验) 1.实验目的 (1) 掌握输入输出程序设计的概念和方法。 (2) 了解PC机外围芯片8259的功能。 (3)学习如何在PC机上编写具有输入输出功能的程序,包括8259芯片的使用方法。 2.实验说明 本实验要求自行编写一个显示器输出处理程序,它可以完成内存中保存的一串字符在屏幕显示, 因此本实验既属于输入输出实验,也属于中断实验。 3.实验内容 编写一个显示器输出处理中断程序(名为NEW09),实现DOS 21H中断的9号功能,在屏幕上输出内存缓冲区BUF中以”$”结束的一串字符串。要求:缓冲区的偏移地址采用DX寄存器进行传递。 4.实验准备 (1) 预习输入输出程序设计的特点和方法。 (2) 仔细阅读参考程序,弄清外围芯片接口初始化的意义和方法。 5.实验步骤 (1) 建立源文件,并通过汇编和连接,产生可执行文件。 (2) 运行程序,观察常规字符键及功能键按下时程序的反应, DATAS SEGMENT buf db'li hongbin','$';此处输入数据段代码 DATAS ENDS STACKS SEGMENT ;此处输入堆栈段代码 STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS

main proc far START: mov al,68h mov ah,35h int 21h push es push bx push ds mov bx,offset buf mov dx,offset new09 mov ax,seg new09 mov ds,ax MOV AX,DATAS MOV DS,AX pop ds pop bx pop es sti mov al,68h mov ah,25h int 21h main endp

汇编语言实验整理

1.设计程序。实现Y=2X+3,X是一位十进制数。要求X从键盘输入,在下一行 显示“Y=2X+3=”以及十进制计算结果。 data segment\x db?\y dw?\mess1db0ah,0dh,'input x:$'\mess2db 0ah,0dh,'Y=2X+3=$'\data ends\code segment\assume cs:code,ds:data\start:\mov ax,data\mov ds,ax\let3:\mov dx,offset mess1\mov ah,9\int21h\mov ah,1\int21h\cmp al,'0'\jb out1\ cmp al,'9'\ja out1\and al,0fh\mov bl,2\mul bl\add ax,3\mov y,ax\mov cx,0\mov bx,10\let0:\mov dx,0\inc cx\idiv bx\push dx\cmp ax,0\jne let0\mov dx,offset mess2\mov ah,9\int 21h\let1:\pop ax\add ax,0030h\mov dl,al\mov ah,2\int21h\ dec cx\cmp cx,0\jnz let1\jmp let3\out1:\mov ah,4ch\int21h\ code ends\end start 2.编写程序,将键盘输入的小写字母变为大写字母显示在屏幕上,输入小写字 母以外的其它字符则退出。 data segment\mess1db0ah,0dh,'xiaoxieinput:$'\mess2db 0ah,0dh,'daxieoutput:$'\data ends\code segment\assume cs:code,ds:data\start:\mov ax,data\mov ds,ax\let2:\mov dx,offset mess1\mov ah,9\int21h\mov ah,1\int21h\cmp al,'a'\jb out1\ cmp al,'z'\ja out1\mov bl,al\mov dx,offset mess2\mov ah,9\int 21h\let0:\sub bl,20h\mov dl,bl\mov ah,2\int21h\jmp let2\out1:\mov ah,4ch\int21h\code ends\end start 3.设计程序。实现Z=X/4+16*Y,X和Y都是一位十进制数。要求从键盘输入, 在下一行显示“Z=X/4+16*Y”以及十进制计算结果。 data segment\mess1db0ah,0dh,'input x:$'\mess2db0ah,0dh,'input y:$'\ mess3db0ah,0dh,'z=x/4+16*y=$'\data ends\code segment\assume cs:code,ds:data\start:\mov ax,data\mov ds,ax\let0:\mov dx,offset mess1\mov ah,9\int21h\mov ah,1\int21h\mov cl,2\sub al,30h\ mov ah,0\sar ax,cl\mov bl,al\mov dx,offset mess2\mov ah,9\int 21h\mov ah,1\int21h\sub al,30h\mov ah,0\mov cl,4\sal ax,cl\ add al,bl\mov bx,ax\mov dx,offset mess3\mov ah,9\int21h\let1:\ mov ax,bx\mov cx,0\mov bx,10\let2:\mov dx,0\inc cx\idiv bx\ push dx\cmp ax,0\jne let2\let3:\pop ax\add ax,0030h\mov dl,al\ mov ah,2\int21h\dec cx\cmp cx,0\jne let3\mov ah,4ch\int

汇编语言的高级语言特性

汇编语言的高级语言特性 现在写汇编语言,就象写结构化的高级语言一样,非常的方便。不信?你看看下面写的小程序就知道啦,没有程序跳转,完全的结构化设计。最后还附有 Glow Glove 总结的小篇文章,供大家学习参考。 ;------------------------------------------------------- ;例:计算一个数据的阶乘 ;若结果较小,可放在 EAX 寄存器 ;若结果较小,可放在 EDX:EAX 寄存器 ;文件名:7.asm .386 .model flat,stdcall option casemap:none include windows.inc include masm32.inc include kernel32.inc include user32.inc includelib masm32.lib includelib kernel32.lib includelib user32.lib .data? CharOut db 100 dup(?) .code OutEdxEax PROTO :DWORD ;将EDX:EAX中的数据转换成十进制输出字符串形式! OutEdxEax proc lpString ;比如:EDX=0,EAX=01234567H,则转换后的字符串为: -> '19088743',0 mov edi,lpString ;指向存放结果的地址 mov esi,lpString mov ecx,10 ;转换成十进制 .while eax!=0 || edx!=0 push eax mov eax,edx xor edx,edx div ecx

汇编语言程序设计实验

第2章汇编语言程序设计实验 2.1、实验1-1——多字节数的运算 1、实验目的计科1406 熟悉汇编语言的上机环境和各种工具(编辑、汇编、连接、调试);201416010608掌握完整段和简化段两种汇编程序的编写;李文俊 掌握简单汇编程序的处理和调试过程。 2、实验内容 ⑴、两个长度为3个字节(3B)的二进制无符号数,分别存放在首地址为buf1和buf2的连续内存单元中,编程求这两者之和,并将结果放在起始地址为res的内存单元中。例如,这两个数据为888888H、456789H,则其和应为[1]CDF011H。 要求: ?用完整段和简化段两种方式实现。 ?观察它们的反汇编结果并进行比较,单步运行程序。 注意: ?程序运行前先将res清0,程序运行后观察res单元中的数据是否符合预期。 ?数据存放应“高对高、低对低”。 ⑵、将两数改为3B的压缩BCD码,重复以上实验过程。例如,这两个数据为888888H、456789H,则其和应为[1]345677H(表示[1]345677)。 ?注意,每两个字节相加后,应紧接着进行二-十进制调整。 3、实验扩展和思考 ⑴、计算两个长度为3B的二进制数据之差应如何进行操作? ⑵、计算两个长度为3B的压缩BCD码数据之差应如何进行操作? ============================================================================ ==== 实验报告 ============================================================================

汇编语言实验

循环与分支程序设计 实验目的 ⒈进一步熟悉掌握上机操作。 ⒉练习循环分支程序的编写方法。 3.掌握利用DEBUG修改参数、检查结果的方法。 实验内容: 1.设有10个学生的成绩分别为56、69、84、82、73、88、99、63、100和80分。试编制程序分别统计低于60分、60~69分、70~79分、80~89分、90~99分及100分的人数存放到s5、s6、s7、s8、s9及s10单元中。datarea segment grade dw 56,69,84,82,73,88,99,63,100,80 s5 dw 0 s6 dw 0 s7 dw 0 s8 dw 0 s9 dw 0 10 dw 0 datarea ends main proc far assume cs:prognam, ds:datarea start: push ds sub ax,ax push ax mov ax,datarea mov ds,ax mov s5, 0 mov s6, 0 mov s7, 0 mov s8, 0 mov s9, 0 mov s10, 0 mov cx, 10 mov bx, offset grade compare: mov ax, [bx] cmp ax, 60 cmp ax, 70 cmp ax, 80 cmp ax, 90 cmp ax, 100 jmp short change-addr nine: inc s9 jmp short change-addr

eight: inc s8 jmp short change-addr seven: inc s7 jmp short change-addr six: inc s6 jmp short change-addr five: inc s5 change-addr: add bx, 2 loop compare ret main endp end start

河北工业大学汇编语言程序设计实验

汇编语言程序设计实验 网络*** *** 实验一 顺序与分支程序设计 一 、实验目的 1) 掌握顺序程序设计方法。 2) 掌握分支程序的结构及分支程序的设计,调试方法。 2) 学习数据传送及算术和逻辑运算指令的用法。 3) 熟悉在pc 机上建立、汇编、连接、调试和运行汇编语言程序的过程。 二、实验内容 1.实验六 从键盘上接收一位十进制数x ,计算y 值,并以十六进制形式显示出来,y 按下列公式计算。 ???????===-=+=) 6(2/) 5()4(2)3(2222X X X X X X X X X X Y 2..实验七 实验内容:从键盘上接收两个一位十六进制数x 和y ,然后再输入一个a-d 之间的一个字符,按下列要求计算。 a) 当输入字符为a ,则计算x+y ,并以十六进 制形式显示出来 b) 当输入字符为b ,则计算|x-y|,并以十六进制形式显示出来 c) 当输入字符为c ,则计算x*y ,并以十六进制形式显示出来 d) 当输入字符为d ,则计算x/y ,并以十六进制形式显示出来 三、实验代码 实验六 DATE SEGMENT

X DB ? DATE ENDS ;数据段 CODE SEGMENT ASSUME CS:CODE,DS:DATE START:MOV AX,DATE ;代码段 MOV DS,AX ;初始化ds寄存器 MOV AH,1 INT 21H ;读文件到缓冲区 CMP AL,33H ;比较指令 JB L0 ;A

相关主题
文本预览