第7章 汇编语言与汇编程序
汇编语言程序设计
6)组合运算符(属性修改运算符) ① PTR运算符:运算符PTR可以指定或修改存储器操作数的 类型。注意,这种修改是临时性的,仅在该语句内有效。 下面是使用PTR运算符的例子: 例10 INC BYTE PTR[BX] 该语句的目的操作数是内存单元,用寄存器作为地址指 针。如果仅仅使用[BX]来表示该操作数,则汇编该语句时 ,不能确定该存储单元是字节单元还是字单元。因此,必 须使用BYTE PTR说明它为字节操作数(若为字操作数, 则使用WORD PTR说明)。
4)分析运算符:分析运算符有:SEG、OFFSET、TYPE、 LENGTH和SIZE。 ① SEG运算符:利用SEG运算符可以得到一个标号或变量的段 基值。下面的指令将ARRAY的段基值送给DS寄存器。 例4 MOV AX,SEG ARRAY MOV DS,AX ② OFFSET运算符:利用OFFSET运算符可以得到一个标号或 变量的偏移量。下面的指令将STRING的偏移地址送给DX。 例5 MOV DX,OFFSET STRING ③ TYPE运算符:运算符TYPE的运算结果是一个数值,这个数 值与操作数类型的对应关系见表4-1。
4.1.3
汇编语言的表达式
(3)表达式。表达式是操作数常见的形式,它由常数、变量 、标号通过操作运算符连接而成。 汇编语言中有:算术运算符、逻辑运算符和关系运算符等 。 1)算术运算符:常用的有:+(加)、–(减)、*(乘)、/ (除)和MOD(模运算)等,算术运算的结果是一个数值 。 例1 MOV AX,VARX+2 表示VARX的地址加2后对应的存储字单元内容送给AX。 2)逻辑运算符:AND(逻辑“与”)、OR(逻辑“或”) 、NOT(逻辑“非”)和XOR(逻辑“异或”)。逻辑运算 用于数值表达式中对数值进行按位逻辑运算,并得到一个数 值结果。 例2 MOV AL,0FH AND 35H 表示将0FH与35H按位相与后得到05H送给AL, 这条指令 与MOV AL, 05H 等效。
ARM复习课后题答案
1.国内嵌入式系统行业对嵌入式系统的定义是什么?如何理解答:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
从这个定义看以看出嵌入式系统是与应用紧密结合的,它具有很强的专用性,必须结合实际系统要求进行合理的裁剪利用。
因此有人把嵌入式系统比作是一个针对特定的应用而量身定做的专用计算机系统。
2.当前最常见的源码开放的嵌入式操作系统有哪些,请举出两例,并分析其特点答:嵌入式linux和嵌入式实时操作系统uc/os-IILinux:(1)linux是源码开放的,每一个技术细节都是透明的,易于裁剪定制。
(2)目前嵌入式linux已经在多种嵌入式处理器芯片移植成功,有大量且不断增加的开发工具,这些工具为嵌入式系统开发提供了良好的开发环境。
(3)Linux内核小、功能强大、运作稳定、效率高。
Ucos:(1)源代码公开(2)可移植性。
(3)可固化(4)可裁剪(5)占先式(6)多任务(7)可确定性。
(8)系统服务第2章ARM技术与ARM体系结构3.arm处理器的工作模式有哪几种,其中哪些为特权模式,哪些为异常模式,并指出处理器在什么情况下进入相应的模式。
答:ARM 处理器共有7 种工作模式:用户模式:非特权模式,也就是正常程序执行的模式,大部分任务在这种模式下执行。
在用户模式下,如果没异常发生,不允许应用程序自行改变处理器的工作模式,如果有异常发生,处理器会自动切换工作模式FIQ 模式:也称为快速中断模式,支持高速数据传输和通道处理,当一个高优先级(fast)中断产生时将会进入这种模式。
IRQ 模式:也称为普通中断模式,:当一个低优先级中断产生时将会进入这种模式。
在这模式下按中断的处理器方式又分为向量中断和非向量中断两种。
通常的中断处理都在IRQ 模式下进行。
SVC 模式:称之为管理模式,它是一种操作系统保护模式。
当复位或软中断指令执行时处理器将进入这种模式。
汇编语言程序设计第七章 循环结构程序
2. LOOPE/LOOPZ 条件重复控制指令
指令汇编格式: LOOPE/LOOPZ AGAIN
操作: (1) CX CX-1
(2) 若CX≠ 0且ZF=1,则使控制转到AGAIN 标识的循环入口处,继续下一次循环,否则退出循 环体,执行后续指令。
例 比较两个字符串是否相等。
STR1 DB
‘12345’
DSEG SEGMENT
DATA DB
10,20,30,80,100,90,120
CNT DW 7
ADR DW 0FFFFH
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG,ES:DSEG
START: MOV AX,DSEG MOV DS,AX
DATA1 00H
01H 00H 02H
: :
SI DATA2 00H
10H
50
00H
个
20H
字
单
:
元
:
DI SUM 00H
BX
00H
50
00H 50
个
00H
个
字 单
:
字 单
元
:
元
00H
00H
例7.1 设内存DATA1和DATA2开始分别存放50个无符 号字数据,编制程序将两个存储区对应字数据求和并存 入SUM开始的单元。
存储器中仅由字节或字组成的一组数据称为数据串。由字节组 成的数据串称为字节数据串,简称字节串;由字组成的数据串称为 字数据串,简称字串。一个数据串的长度最长不能超过64KB。
数据串操作指令的寻址方式为数据串寻址:
(1)指令中要处理的两个数据串应分别在数据段和附加段中定义。 (2)数据段中定义的数据串要用SI作指针;
汇编语言基础知识
第1章汇编语言基础知识汇编语言是直接在硬件之上工作的编程语言,首先要了解硬件系统的结构,才能有效地应用汇编语言对其编程,因此,本章对硬件系统结构的问题进行部分探讨,首先介绍了计算机的基本结构、Intel公司微处理器的发展、计算机的语言以及汇编语言的特点,在此基础上重点介绍寄存器、内存组织等汇编语言所涉及到的基本知识。
1.1微型计算机概述微型计算机由中央处理器(Central Processing Unit,CPU)、存储器、输入输出接口电路和总线构成。
CPU如同微型计算机的心脏,它的性能决定了整个微型计算机的各项关键指标。
存储器包括随机存储器(Random Access Memory,RAM)和只读存储器(Read Only Memory,ROM)。
输入输出接口电路用来连接外部设备和微型计算机。
总线为CPU和其他部件之间提供数据、地址和控制信息的传输通道。
如图1.1所示为微型计算机的基本结构。
图1.1微型计算机基本结构特别要提到的是微型计算机的总线结构,它使系统中各功能部件之间的相互关系变为各个部件面向总线的单一关系。
一个部件只要符合总线结构标准,就可以连接到采用这种总线结构的系统中,使系统功能得到扩展。
数据总线用来在CPU与内存或其他部件之间进行数据传送。
它是双向的,数据总线的位宽决定了CPU和外界的数据传送速度,8位数据总线一次可传送一个8位二进制数据(即一个字节),16位数据总线一次可传送两个字节。
在微型计算机中,数据的含义是广义的,数据总线上传送的不一定是真正的数据,而可能是指令代码、状态量或控制量。
汇编语言程序设计2地址总线专门用来传送地址信息,它是单向的,地址总线的位数决定了CPU可以直接寻址的内存范围。
如CPU的地址总线的宽度为N,则CPU最多可以寻找2N个内存单元。
控制总线用来传输控制信号,其中包括CPU送往存储器和输入输出接口电路的控制信号,如读信号、写信号和中断响应信号等;也包括其他部件送到CPU的信号,如时钟信号、中断请求信号和准备就绪信号等。
微机原理课后答案7
第七章部分习题解答1、指出:(1)MOV AX,V AR;(2)LEA AX,V AR;(3)MOV AX,OFFSET V AR三条指令之间的异同(V AR为数据段的一个变量名称)解: (1)将V AR的一个字送AX,相当于MOV AX,[V AR](2) 将VAR的偏移地址送AX(3) 将VAR的段内偏移地址送AX,功能与(2)相同。
2、若程序中多次使用某一程序段,问将该程序段设计成子程序和定义成宏指令各有何优缺点?答:设计成子程序在整个程序占用内存少,但执行时间长;定义成宏指令程序汇编后占用内存多,但执行时间短。
3、下面列出的是一个汇编源程序中的一个程序段。
试以图形表示出DATA段中各变量在存储器中的存储位置(标明偏移地址及有关单元的内容,制表示);写出CODE段内汇编后的可执行指令。
TABLDA TA SEGMENTTABL DB‘ABCD’2 DUP(2 DUP(1,2),3)V AR DW 4 DUP(?)DA TA ENDSCODE SEGMENTASSUME CS:CODE,D S:DATAORG 100HLEB1:LEA SI,TABLMOV BX,OFFSET V ARMOV AX,LENGTH V ARMOV AX,TYPE V ARMOV AL,SIZE V ARMOV AH,SIZE TABLMOV CX,(OFFSET V AR-(OFFSET TABL)V ARLEA DX,LEB1解: DATA段各变量的存储情况如右图所示,对CODE段可执行指令注释如下:LEB1:LEA SI,TABL ;将TABL的偏移地址送SIMOV BX,OFFSET V AR ;将V AR的偏移地址送BXMOV AX,LENGTH V AR ;将V AR的项数(4)的送AXMOV AX,TYPE V AR ;将V AR的符号名类型值02送AXMOV AL,SIZE V AR ;将为V AR分配的字节(08)送ALMOV AH,SIZE TABL ; 将为TABL分配的字节(0EH)送ALMOV CX,(OFFSET V AR)-(OFFSET TABL);将OEH送CXLEA DX,LEB1 将LEB1(100H)送DX。
编译原理(第2版)课后习题答案详解
第1 章引论第1 题解释下列术语:(1)编译程序(2)源程序(3)目标程序(4)编译程序的前端(5)后端(6)遍答案:(1)编译程序:如果源语言为高级语言,目标语言为某台计算机上的汇编语言或机器语言,则此翻译程序称为编译程序。
(2)源程序:源语言编写的程序称为源程序。
(3)目标程序:目标语言书写的程序称为目标程序。
(4)编译程序的前端:它由这样一些阶段组成:这些阶段的工作主要依赖于源语言而与目标机无关。
通常前端包括词法分析、语法分析、语义分析和中间代码生成这些阶段,某些优化工作也可在前端做,也包括与前端每个阶段相关的出错处理工作和符号表管理等工作。
(5)后端:指那些依赖于目标机而一般不依赖源语言,只与中间代码有关的那些阶段,即目标代码生成,以及相关出错处理和符号表操作。
(6)遍:是对源程序或其等价的中间语言程序从头到尾扫视并完成规定任务的过程。
第2 题一个典型的编译程序通常由哪些部分组成?各部分的主要功能是什么?并画出编译程序的总体结构图。
答案:一个典型的编译程序通常包含8 个组成部分,它们是词法分析程序、语法分析程序、语义分析程序、中间代码生成程序、中间代码优化程序、目标代码生成程序、表格管理程序和错误处理程序。
其各部分的主要功能简述如下。
词法分析程序:输人源程序,拼单词、检查单词和分析单词,输出单词的机内表达形式。
语法分析程序:检查源程序中存在的形式语法错误,输出错误处理信息。
语义分析程序:进行语义检查和分析语义信息,并把分析的结果保存到各类语义信息表中。
中间代码生成程序:按照语义规则,将语法分析程序分析出的语法单位转换成一定形式的中间语言代码,如三元式或四元式。
中间代码优化程序:为了产生高质量的目标代码,对中间代码进行等价变换处理。
目标代码生成程序:将优化后的中间代码程序转换成目标代码程序。
表格管理程序:负责建立、填写和查找等一系列表格工作。
表格的作用是记录源程序的各类信息和编译各阶段的进展情况,编译的每个阶段所需信息多数都从表格中读取,产生的中间结果都记录在相应的表格中。
汇编语言程序设计
段寄存器赋值
在DOS环境下运行程序时,DOS的装载程序对寄 存器CS:IP、SS:SP作正确的初始化,而将段寄存 器DS、ES初始化为程序段前缀PSP的起点,而不是用 户所需的地址。因此段寄存器DS、ES的赋值还要有程 序本身来完成。如 MOV AX,DATA MOV DS,AX 注意这里的MOV 指令,其源操作数是段名,它是把 段名对应段的基地址送给目的操作数,这是传送指令 中的一个特殊情况。
汇编语言程序语句的格式
注释域以分号打头,注释部分是编程者对指令的作 用所作的言简意赅的说明。汇编语言不对这部分汇编。
• 汇编语言中的标号或名字或其他变量名(统称标识符)
必须是由字母或特殊字符打头的字母数字串,中间不能 有空格。合法的字符包括:字母 A~Z 或 a~z ;数字 0~9 ; 特殊字符有问号(?)、圆点(.)、@、下横线(_) 和美元符号($),圆点只能作为第一个字符。 标号和名字的长度不超过31个字符,超过部分均被删 去。 标识符不能和保留字重名
MASM.EXE是用于8088/8086、80286、80386等CPU的微机上的一种宏汇编 程序。它支持多模块的程序设计,由它生成的目标程序可直接和其他模块的汇编 语言程序的目标程序相连接,也可直接和其它高级语言程序的目标程序模块相连 接。
8088/8086汇编语言程序的上机操作过程:
1)根据任务要求,应用指令系统给定的指令编制程序; 2)利用编辑软件如EDIT等将程序输入计算机,程序名后缀*.asm; 3)应用MASM.EXE对.asm程序进行汇编,得到*.obj和*.lst文件; 4)应用LINK.EXE程序对.obj文件进行连接定位,得到*. exe文件; 5)执行*. exe文件,应用文件进行调试、查看文件执行情 况。
汇编语言、微机原理及接口技术(第3版)郑初华_课后题解答
第1章进制及码元1.进制转换129= 81H= 10000001B=201Q298= 12AH= 100101010B=452Q1000= 3E8H= 1111101000B= 1750Q5DH= 1011101 B= 135 Q= 93 D3E8H= 1111101000 B= 1750Q= 1000 D;357Q=11101111 B= 0EF H= 239 D3.数据表示范围:一字节的无符号数表示范围为0~255,有符号数(补码)表示范围为-l28—+127。
一个字的无符号数表示范围为0~65535,有符号数(补码)表示范围为—32768~+32767。
N位二进制数的无符号数表示范围为0~(2N-1),有符号数(补码)表示范围为-2N-1~(2N-1-1).4.35H代表的ASCII字符为'5',代表十六进制数时等价的十进制值为53 ,代表压缩8421BCD码等价的十进制值为35 ,代表非压缩8421BCD码等价的十进制值为5。
5.FFH代表无符号数时等价的十进制值为255 ,代表补码有符号数时等价的十进制值为一1 ,代表反码有符号数时等价的十进制值为一0 ,代表原码有符号数时等价的十进制值为一l27。
6.--20的8位二进制补码为ECH ,原码为94H ,反码为EBH 。
158的16位二进制补码为009EH,原码为009EH ,反码为009EH 。
第2章微机硬件基础1.计算机系统硬件的五大功能部件及其主要功能?答:硬件系统按功能模块分为运算器、控制器、存储器、输入设备、输出设备。
运算器主要完成算术运算、逻辑运算及移位运算,其中主要包括算术逻辑运算单元Arithmetic Logic Unit,ALU)和暂存数据(原始、中间、结果)的寄存器(Register,R)。
控制器实现对计算机部件的协调调度完成指令的分析执行,其中主要有程序计数器Program Counter,PC)或叫指令指针(Instruction Pointer,IP)、指令寄存器(Instruction register,IR)、指令译码器(Instruction Decoder,ID)、微操作命令发生器、时序发生器等。
《汇编语言》作业答案
3545233.doc 制作:江家宝《IBM—PC汇编语言程序设计》课后作业参考答案目录第一章:基础知识 ........................................................................................ 2第二章:80×86计算机组织......................................................................... 2第三章:80×86的指令系统和寻址方式..................................................... 3第四章:汇编语言程序格式........................................................................ 7第五章:循环与分支程序设计.................................................................... 9第六章:子程序结构 ................................................................................ 12第七章:高级汇编语言技术.................................................................... 20第八章:输入输出程序设计.................................................................... 22第九章:BIOS和DOS中断 (23)3545233.doc 制作:江家宝第一章:基础知识1.1、用降幂法和除法将下列十进制数转换为二进制数和十六进制数:(3) 4095 答:(3) 4095 =1111 1111 1111B=FFFH1.2、将下列二进制数转换为十六进制数和十进制数:(1) 10 1101 答:(1) 10 1101B=2DH=451.3、将下列十六进制数转换为二进制数和十进制数:(4) 1234 答:(4) 1234H=1 0010 0011 0100B=46601.4、完成下列十六进制数的运算,并转换为十进制数进行校核:(3) ABCD-FE 答:(3) ABCD-FEH=AACFH=437271.5、下列各数均为十进制数,请用8位二进制补码计算下列各题,并用十六进制数表示其运算结果。
汇编语言程序设计(第四版)【课后答案】
汇编语言程序设计第四版【课后习题答案】第1章汇编语言基础知识〔习题1.1〕简述计算机系统的硬件组成及各部分作用。
〔解答〕CPU:包括运算器、控制器和寄存器组。
运算器执行所有的算术和逻辑运算;控制器负责把指指令逐条从存储器中取出,经译码分析后向机器发出各种控制命令,并正确完成程序所要求的功能;寄存器组为处理单元提供所需要的数据。
存储器:是计算机的记忆部件,它用来存放程序以及程序中所涉及的数据。
外部设备:实现人机交换和机间的通信。
〔习题1.2〕明确下列概念或符号:主存和辅存,RAM和ROM,存储器地址和I/O端口,KB、MB、GB和TB。
〔解答〕主存又称内存是主存储器的简称,主存储器存放当前正在执行的程序和使用的数据,CPU可以直接存取,它由半导体存储器芯片构成其成本高、容量小、但速度快。
辅存是辅助存储器的简称,辅存可用来长期保存大量程序和数据,CPU需要通过I/O接口访问,它由磁盘或光盘构成,其成本低、容量大,但速度慢。
RAM是随机存取存储器的英语简写,由于CPU可以从RAM读信息,也可以向RAM写入信息,所以RAM也被称为读写存储器,RAM型半导体存储器可以按地址随机读写,但这类存储器在断电后不能保存信息;而ROM中的信息只能被读出,不能被修改,ROM型半导体通常只能被读出,但这类存储器断电后能保存信息。
存储器由大量存储单元组成。
为了区别每个单元,我们将它们编号,于是,每个存储单元就有了一个存储地址,I/O接口是由一组寄存器组成,为了区别它们,各个寄存器进行了编号,形成I/O地址,通常称做I/O端口。
KB是千字节、MB是兆字节、GB是吉字节和TB是太字节,它们都是表示存储器存储单元的单位。
〔习题1.3〕什么是汇编语言源程序、汇编程序、目标程序?〔解答〕用汇编语言书写的程序就称为汇编语言源程序;完成汇编工作的程序就是汇编程序;由汇编程序编译通过的程序就是目标程序。
〔习题1.4〕汇编语言与高级语言相比有什么优缺点?〔解答〕汇编语言与高级语言相比的优点:由于汇编语言本质就是机器语言,它可以直接地、有效地控制计算机硬件,因而容易产生运行速度快,指令序列短小的高效目标程序,可以直接控制计算机硬件部件,可以编写在“时间”和“空间”两方面最有效的程序。
汇编源程序名词解释
汇编源程序名词解释
汇编源程序,也被称为汇编语言程序或汇编语言源程序,是指用汇编语言编写的程序。
汇编语言是一种低级的编程语言,其指令集与计算机的机器语言指令集一一对应。
因此,汇编源程序是人类可读的文本文件,包含了按照特定语法规则编写的指令。
然而,汇编源程序在机器上不能直接执行。
它必须经过一个称为“汇编”的过程,即翻译过程,才能变成计算机可以执行的机器语言程序。
汇编程序的核心功能是将汇编指令逐条翻译成机器指令,这正是汇编语言中“汇编”一词的含义。
汇编源程序的文件扩展名通常为.asm,经过汇编以后生成的浮动地址二进制文件扩展名为.obj。
这个.obj文件还需要经过连接才能生成可执行文件.exe。
总的来说,汇编源程序是计算机程序开发过程中的一个重要环节,它介于高级语言源程序和机器语言之间,既具有一定的可读性,又能直接对应到计算机硬件指令,因此在某些特定的应用场合(如系统编程、嵌入式系统开发等)有着广泛的应用。
汇编语言概况-汇编语言程序设计
DB 0DH,0AH,’$’
DATA EMDS
;数据段定义结束
STACK SEGMENT ;堆栈段定义开始
ST1 DB 100DUB(?);定义100个字节
STACK ENDS
DATA SEGMENT
;数据段定义开始
DA1 DB ‘This is a sample program’
DB 0DH,0AH,’$’
5
• 标号由英文字母、数字、 或“_ , @, ? ” 等组成,但应
注意:
第一个符号不能是数字;
“?” 不能单独做标号。
保留字不能作为标号使用。
所谓保留字,就是所有的指令,伪指令以及汇编语言定义的 特殊符号,例如 LJMP DB 等。
• 标号不是每一条指令都必须的,只有需要时,指令前面才加
标号。所谓需要,就是转移指令的目的地址,或过程(子程序) 的第一条指令,或其它目的。
CODE SEGMENT
;代码段定义开始
ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET MEI
MOV AH,09H
CODE END
ENDS
INT MOV MOV INT
21H DX,OFFSET BUFDMA AH,0AH
START
33
6. 过程定义伪指令
PROC/ENDP NEAR FAR
例子:BCD码相加的程序段。
.MODEL SMALL
.586
.DATA
FIRST DB 11,22,33,44
SECOND
DB 55,66,77,88
什么是汇编程序
什么是汇编程序
汇编程序是一种将汇编语言源代码转换成机器语言目标代码的程序。
汇编语言是一种低级语言,与特定计算机体系结构密切相关,使用助记符来代表计算机指令和数据,比直接使用机器语言更容易理解和编写。
汇编程序接收编写好的汇编语言源代码作为输入,然后将其转换成机器语言,即计算机可以直接执行的指令。
这个过程包括将汇编语言指令转换成二进制形式,并且可能还包括一些优化步骤以提高目标代码的效率。
与高级语言编译程序不同,汇编程序不会对源代码进行高级的语义分析或优化,它主要是负责将汇编语言指令转换成等效的机器语言指令。
使用汇编语言编写程序可以直接操作硬件和资源,通常用于对性能和资源利用率要求较高的应用,如嵌入式系统、驱动程序和性能关键的应用程序。
1/ 1。
汇编语言程序设计教程(第二版)习题参考答案
汇编语言程序设计教程(第二版)习题参考答案第1章计算机基础知识1.计算机的应用分哪几个方面,请举例说明书中未提到的领域的计算机应用。
科学计算、数据处理、计算机控制、计算机辅助设计、人工智能、企业管理、家用电器、网络应用。
书中未提及的如:远程教育、住宅小区控制、飞行系统控制与管理等。
2.简述计算机的发展过程,请查阅相关资料,列出微机的发展过程。
电子管、晶体管、集成电路、大规模集成电路以IBM为例,微机的发展:4004、8008、8080、8086/8088、80286、80386、80486、Pentium 系列3.计算机的字长是怎么定义的,试举例说明。
计算机能同时处理二进制信息的位宽定义为计算机的字长。
如8086能同时进行16位二进制数据的运算、存储和传输等操作,该机器的字长为16位。
4.汇编语言中的基本数据类型有哪些?数值型数据和非数值型数据。
非数值数据如字符、字符串、逻辑值等。
(1)7BCH=011110111100B=1980D(2)562Q=101110010B=370D(3)90D=01011010B=5AH(4)1110100.111B=164.7Q=74.EH30H~39H 41H~5AH 61H~7AH9.在汇编语言中,如何表示二进制、八进制、十进制和十六进制的数值?用相应进制的数值加上进制标记即可。
二进制用B,如10101010B八进制用Q,如437Q。
十进制用D或不用,如54D,或54。
十六进制用H,如27A8H10.完成下列二进制数的加减运算。
(1)10101010 + 11110000 (2)11001100 + 01010100=110011010 =100100000(3)11011010 - 01010010 (4)11101110 - 01001101=10001000 =1010000111.完成下列十六进制数的加减运算。
(1)0FEA9 - 8888=7621H (2)0FFFF - 1234=EDCBH(3)0EAC0 + 0028=EAE8H (4)3ABC + 1678=5134H12.完成下列BCD码的运算。
微机原理-第7章 汇编语言与汇编程序5 常用DOS系统功能调用及BIOS功能调用-文档资料
常用DOS系统功能调用
① ② ③ ④ ⑤ ⑥
单字符输入 ( 01H、07H、08H功能 ) 显示单字符 ( 02H、05H功能 ) 单字符输入或显示( 06H功能 ) 字符串输入 ( 0AH功能 ) 显示字符串 ( 09H功能 ) 检测键盘状态 ( 0BH功能 )
① 单字符输入 (01H、07H、08H功能)
max DB 11 DB ? DB 11 DUP(?)
SEGMENT ASSUME CS:code, DS:data MOV AX , data ;置缓冲区地址于DS:DX
ROM BASIC ROM BIOS ( a)
FFFFH
ROM BASIC ROM BIOS (b)
FFFFH
图 7.5-1 PC-DOS (a) DOS启动后 (b) 执行程序装入后
软件中断分类
DOS中断
中断类型号
20H~3FH 为用户程序和系统程序提供磁盘读写、程 序退出、系统功能调用等功能。
③ 单字符输入或显示 (06H功能)
入口参数:DL = 0FFH,表示从键盘输入字符
或 DL ≠ 0FFH,表示DL中是要显示字符的ASCII 码
功能号:
类型号:
AH = 06H
21H
出口参数:若ZF=0时,表示有键按下,将字符的ASCII码
送入寄存器AL, AL=输入字符。 若标志ZF=1时,表示无键按下,寄存器AL中不 是键入字符ASCII码, AL=0 。
② 显示单字符 (02H、05H功能)
(a)2号系统功能调用
入口参数:DL = 要显示字符的ASCII 码 功能号: AH = 02H 类型号: 21H 出口参数:无 实现功能:显示指定字符,光标右移。
微机原理、汇编语言与接口技术 第七章 习题答案 人民邮电出版社(周杰英 张萍 郭雪梅 著)
第7章输入/输出接口习题与参考答案这一章的习题与参考答案分为两大部分,一部分是输入输出概述及DMA控制器的习题与参考答案;另一部分是中断及中断控制器部分的习题与参考答案。
一、输入输出概述及DMA控制器的习题与参考答案1、请说明为什么输入接口的数据缓冲寄存器必须有三态输出功能而输出接口却不需要的原因。
解:输入接口的数据缓冲寄存器的输出端是直接接在数据总线上的,如果数据寄存器没有三态输出功能,则无论数据寄存器被寻址选中或未被选中,其数据都会被送上数据总线,若此时总线上真正要传送的数据与该输入缓存器的内容不一致时,就会发生总线冲突。
所以,输入接口的数据缓冲器必须有三态输出功能,以便当接口未被寻址选中时,其输出端处于高阻态,从而与总线隔离。
对于输出接口来说,是输入端与数据总线相连,而输出端是与外设相连,因此其输出不影响总线状态;另外,一个外设一般只与一个输出数据缓存器相连,因此输出接口的数据缓存器无须有三态输出功能。
2、8086/8088CPU中哪些寄存器可以用于I/O寻址?若I/O端口地址分别是10H和100H,分别写出向这两个端口写入73H的程序段。
解:8086/8088CPU内可以用于I/O寻址的寄存器为AL、AX和DX。
向端口10H写入73H的程序段为:MOV AL,73HOUT 10H,AL向端口10H写入73H的程序段为:MOV AL,73HMOV DX,100HOUT DX,AL3、图为7段显示器接口,显示器采用共阳极接法,试编写程序段,使AL中的一位十六进制数显示于显示器上。
输出锁存器地址为40H。
解:TABLE DB 3FH,06H,5BH,4FHDB 66H,6DH,7DH,07HDB 7FH,67H,77H,7CH,DB 39H,5EH,79H,71HLEA BX,TABLEXLA TOUT 40H,AL4、PC/XT机有哪些输入输出方式?各自的特点如何?DMA控制器应具备哪些功能?解:无条件方式:需要外设处于就绪状态,硬件简单;查询方式:CPU需要不断地查询外设是否就绪,浪费CPU时间,硬件较简单;中断方式:外设准备好后,向CPU发中断请求,请求CPU完成数据传输,外设与CPU 并行;硬件又比前两者复杂。
1-11章汇编测试题目(汇编网)
第1章汇编测试题目(后附答案)1、1个CPU读取1024字节的数据至少读取了512次,数据总线的宽度_____。
A、8B、10C、16D、322、在8086的内存空间中下面哪段内存是不可写的_____。
A、0~9FFFFB、A0000~B7FFFC、B8000~BFFFFD、C0000~FFFFF3、下列哪个计算机部件能确定一组二进制数是要执行的指令还是用于操作的数据_____。
A、显示器B、硬盘C、内存D、中央处理器4、关于总线的说法错误的是_____。
A、地址总线的宽度决定了CPU的寻址能力。
B、数据总线的宽度决定了CPU与外界进行数据传送时的一次数据传送量。
C、控制总线的宽度决定了CPU对系统中其它器件的控制能力。
D、总线就是负责CPU内部信息传送的一系列导线。
5、1KB的存储器有____个存储单元A、1000B、1024C、512D、2566、1个CPU的寻址能力为32KB,那么它的地址总线宽度为_____。
A、13B、15C、18D、32k7、1KB的存储器可以存储____个bit 。
A、1024B、8192C、1000D、88、1个CPU访问的最大内存地址是1023,地址总线的宽度_____。
A、8B、10C、13D、149、计算机中一个存储单元可以存储多少信息_____。
A、1bitB、1ByteC、1KBD、512B10、下列说法正确的是:____A、在计算机中,存储器分为指令存储器和数据存储器。
B、电子计算机的最小信息单位是Byte。
C、微型存储器的容量是以Byte为最小单位来计算的。
D、在“1KB=1024B”中,“B”代表的是Bit。
11、一个CPU的寻址能力为8KB,那么它的地址总线的宽度为____。
A、8B、10C、12D、1312、下列说法中正确的是____。
A、不同的微处理器有相同的机器指令集。
B、机器语言和汇编语言都需要编译程序来编译成机器指令。
C、每一个汇编指令都对应唯一的一个机器指令。
微机原理及应用参考答案
参考答案第一章计算机中的数制和码制第二章计算机概述一、填空题1.82. 23.10244.25.5、11001.1、00100101.0101B5.1000010B、42H、66H6.41.625、29.AH7.10001101B8.11001001、110010109.-128 ~ +12710.系统软件、应用软件11.电子管、超大规模集成电路二、单选题1. A 2. C 3. D4. C 5. A 6. C三、分析简答题1.8086 CPU的总线根据其中信息传送的类型可分为几种?哪几种?答:8086 CPU的总线根据其中信息传送的类型可分为三种种,分别是:数据总线、地址总线和控制总线2.写出-25的原码、反码、补码,并将补码转换成十六进制数(设机器字长为8位)。
答:X=-25=-11001BX原码:10011001BX反码:11100110BX补码:11100111B = E7H3.举例说明什么是机器数,什么是真值?答:将符号数值化了的数称为机器数。
如:-18=-10010B(真值);机器数为:10010010B第三章半导体存贮器一、填空题1.ROM、RAM2.6个3.8、4二、单选题1. A 2. B 3. D 4. B5. C 6. C 7. B三、分析简答题1.在对存储器芯片进行片选时,全译码方式、部分译码方式和线选方式各有何特点?答:①全译码方式:存储器芯片中的每一个存储单元对应一个唯一的地址。
译码需要的器件多;②部分译码方式:存储器芯片中的一个存储单元有多个地址。
译码简单;③线选:存储器芯片中的一个存储单元有多个地址。
地址有可能不连续。
不需要译码。
四、硬件接口设计题1.答:(1)(2) 存储器类型为RAM 总容量为4K×8地址范围: 0#2000H-27FFH1# 2800H-2FFFH2.答:(9分)(1)存储器类型:RAM该系统的存储器容量为:6K×8位(或:6K字节)(2)1#芯片的地址范围:1000H ~ 17FFH2#芯片的地址范围:0800H ~ 0FFFH3#芯片的地址范围:0000H ~ 07FFH3.1)1K×42)2K×8或2KB3)地址分配范围第一组:A19~ A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0最小地址0 ~ 0 0 0 0 0 0 0 0 0 0 0 00000H~ 最大地址0 ~ 0 1 1 1 1 1 1 1 1 1 1 003FFH 第二组:0 ~ 1 0 0 0 0 0 0 0 0 0 0 00400H~0 ~ 1 1 1 1 1 1 1 1 1 1 1 007FFH第四章微型计算机及微处理器的结构和组成一、填空题1.BIU、EU、指令的译码和指令执行2.4、16、16、6、203.8、164.1、2二、单选题1. B 2. B三、分析简答题1.8086/8088微处理器内部有那些寄存器,它们的主要作用是什么?答:执行部件有8个16位寄存器,AX、BX、CX、DX、SP、BP、DI、SI。
第7章 程序设计语言
华南理工大学计算机教学团队
27
7.4.3 运算符与表达式(2)
• 不同类型的数据可以参与的运算不同。即不 同类型数据的操作使用的运算符也不一样。 VB 主要有4类运算符。算术运算符、字符串
运算符、关系运算符和逻辑运算符。由这4类
运算符组成的表达式分别称为算术表达式、
字符串表达式、关系表达式和逻辑表达式。
不同型号的计算机上运行,程序可移植性差。
华南理工大学计算机教学团队
6
7.1.2 汇编语言(1)
汇编语言也是一种面向机器的语言,为了帮 助人们记忆,它采用了符号(称为助记符) 来代替机器语言的二进制码,所以又称为
符号语言。
用汇编语言书写的程序,计算机不能直接识
别,需要一种程序将汇编语言翻译成机器
语言 才能在计算机上执行,这种翻译程序
• 程序员的工作是编写源程序,然后将其转化为可 执行(机器语言)程序,交给计算机执行。该过 程主要由以下三步构成。
– 编辑程序
– 编译程序 – 执行程序
华南理工大学计算机教学团队
13
7.3 程序设计方法
程序设计的常用方法有结构化程序设计 (Structured Programming) 方 法 和 面 向 对 象 的 程 序 设 计 (Object-oriented Programming)方法。
„如果mark>85, 则输出 Excellent.
华南理工大学计算机教学团队 33
7.4.4 程序控制结构(2)
2. 循环语句:循环语句实现循环结构。
格式:While <条件>
<语句>
Wend
功能说明:其中<条件>为关系表达式或逻辑表达式,如果<条件 >为True,则执行<语句 >,遇到Wend时,返回到 While语句, 继续对<条件>进行测试;如果仍为True,则重复上述过程。直 到<条件> 为False,则不再执行<语句>, 而执行Wend后面的 语句。该循环语句实现的是当型循环结构。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
该指令的源操作数的地址为 DS:OFFSET W
22
直接寻址常用已定义的变量表示 例:W2 DW -5,1994H MOV AX, W2 ; AX=FFFBH MOV BX,W2+2 ; BX=1994H 区分立即寻址与直接寻址 从变量中取数据属于直接寻址方式,注意与符号 常量区别 例:AA EQU 10 MOV AX,AA ;立即寻址,AX=000AH MOV BX,AA+5 ;立即寻址,BX=000FH
微型计算机原理及应用
1
汇编语言与汇编程序
1
符号指令中的表达式
2 3
4 5
操作数的寻址方式
常用指令 伪指令
常用系统功能调用 2
机器指令——用二进制编码形式下达的指示和命令。 如:1100 1101 0010 0001
机器语言编写程序烦琐,难记 忆,不易理解,易出错
符号指令——由助记符、符号组成,它与机INT 21H
MOV [2000H], BX MOV AX, [BX] MOV AX, ES:[BX] MOV AX, [BX-100] MOV [BX+ SI] ,AX MOV AL,[BX+ SI+10]
;(DS : 1000H)的字→AX
; BX →(DS : 2000H) ;(DS : BX)的字→AX ;(ES : BX)的字→AX ;(DS :(BX-100))的字→AX ; AX →(DS : (BX+ SI)) ; (DS : (BX+ SI+10))的字节 → AX
25
6. 变址寻址
操作数据在存储器中,其偏移地址为变址寄存器(SI 或DI)的内容与变量的偏移地址、常量之和。
例:MOV AX,2[SI] 或 MOV AX,[SI+2] 执行的操作是(DS:[SI+2]) →AX
段寄存器的确定,首先由变量确定;若无变量,则由
寄存器确定,寄存器确定的原则同间址。
26
立即寻址方式只能用于源操作数,主要用来给寄存
器或存储器赋初值 例:MOV 5,AL
╳
21
3. 直接寻址
操作数据在存储器中,其偏移地址由指令直接给 出(地址表达式中只有变量名和常量)。段地址默 认在DS中 一种通过[数值]:例 MOV AX,[1000H] 一种通过如下地址表达式: 变量名 或 变量名+常量
7. 基址变址寻址
操作数据在存储器中,其偏移地址为指令中指定 的基址寄存器和变址寄存器的内容与变量的偏移 地址、常量之和。
例: MOV AX,4[ BX+DI] 或MOV AX,[BX+DI+4] ;(DS:[BX+DI+4])→AX
段寄存器的确定,首先由变量确定;若无变量,则由 基址寄存器确定,基址寄存器确定的原则同间址。
23
4. 间接寻址
操作数为带方括号的寄存器:
[SI],[DI],[BX],[BP] 寄存器的内容为操作数据的偏移地址
若用BP,约定段寄存器为SS;否则,约定段寄存器 为DS。
例:MOV AX, [BX]
;(DS:[BX])→AX ;(SS:[BP])→AX
例:MOV AX, [BP]
24
5. 基址寻址
;BX=AX=2035H
ADD AL,BL
;AL=ADH,BL=78H
20
2. 立即寻址
操作数即为操作数据,操作数据就在指令中
例:MOV MOV AL,5 AX,18 ;将字节05H送AL,AL=05H ;将字0012H送AX,AX=0012H
MOV
BL,-1 ;将字节FFH送BL,BL=0FFH
31
汇编语言与汇编程序
1 2 3
4 5
符号指令中的表达式 操作数的寻址方式
常用指令
伪指令 常用系统功能调用和 BIOS 32
3 常用指令
① 数据传送指令
② 加减运算指令
③ 逻辑运算指令 ④ 移位指令 注:学习时注意指令格式及功能
33
3.1 数据传送类指令
指令特点:将数据从一个部位传送到另一部位。 不影响标志寄存器中的状态标志位。 1.通用数据传送指令 格式: MOV dest, source 目的操作数 源操作数 功能:将一个字节或一个字或一个双字数据 从源传送至目的地址中,源保持不变
;基址来初始化其变量
(5)由以上表达式组成的序列,之间用‘ ,’分隔
B5
B6
DB 1,2,3
DB ’1,2,3’ ; 此行的‚,‛不是序列分隔符
15
1.3 变量
例 画出数据的存储形式
W1 B1 W2 D B2 DW B2 ;用B2的偏移地址初始化W1变量 DB AB$ ;变量B1用A、B、$的ASCII码初始化 DW 1994H DD EW ;用 EW的段基址和偏移地址初始化D DB 2 DUP(-5,-1) DB 1 DUP(10,E) ;重复因子1不能省 DB 13,1,3 在附加数据段DATA2中定义的变量如下: EQ DQ 1234567890ABCDEFH EW DW AB,CD ;用DW定义,字符不超过2个
1 2 3 4
符号指令中的表达式
操作数的寻址方式
常用指令
伪指令
5
常用系统功能调用和 BIOS
18
2
操作数的寻址方式
操作助记符 [目的操作数][,源操作数] ;注释
符号指令的格式:
操作助记符——指明指令进行什么操作
源操作数指明操作数据的地址;目的操作数既指明操作数据的 地址,还指明(操作后)数据的存放地址 寻址方式——用什么方式寻找操作数据。 寻址方式可分为三大类: 立即寻址:操作数就是操作数据 寄存器寻址:操作数是寄存器名
目标文件 汇编程序
汇编语言源程序
4
1 符号指令中的表达式
符号
以字母开头的一串字符
为了区别符号和数据,以字母开头的十六进制数, 其前面要加一个前导0
如: 0FFH FFH
数据 符号
汇编中的符号有常量、变量和标号三类
5
1.1 常量和数值表达式
1.常量 — 在汇编时已有确定数值的量 (1)数值常量
常用的有二进制数、十进制数、十六进制数和ASCII 字符
12
1.3 变量
4.变量的定义
在数据段或附加数据段中用伪指令定义
[变量名] [变量名] [变量名] [变量名] [变量名] [变量名] DB DW DD DQ DF DT 表达式[, 表达式[, 表达式[, 表达式[, 表达式[, 表达式[, ……] ……] ……] ……] ……] ……] ;定义字节变量 ;定义字变量 ;定义双字变量 ;定义四字变量 ;定义六字节变量 ;定义十字节变量
ASCII字符做数值常量时,需加单引号 如: 1010B, 10,0AH, ’A’,’$’,’ABC’
6
1.1 常量和数值表达式
(2)符号常量
程序中为经常使用的数值取的名。 用EQU或‚=‛伪指令定义,如: P EQU 314 P=314
注:汇编时,汇编程序不给符号常量分配存储单元 7
1.1 常量和数值表达式
27
10. 存储器寻址及存储器中段基址或段选择字的确定
(1)存储器寻址与地址表达式
地址表达式的一般形式是: 变量[基址寄存器+变址寄存器+常量] 也可表示为: [基址寄存器+变址寄存器+变量+常量] 其他寻址方式都是一般形式的不完整形式: 直接寻址:变量+常量 或 [变量+常量] 间接寻址:[寄存器] 基址或变址寻址:变量[寄存器+常量]或变量/常量[寄存器] 基址变址寻址:变量[基址寄存器+变址寄存器+常量] 或基址寄存器+变址寄存器+变量+常量]
如:B3 DB 2 DUP(0)
B4 DB 2 DUP(5,’A’)
14
1.3 变量
(4)地址表达式(只适用DW、DD和DF3个伪指令) 格式:[变量名] [变量名] DW DD 地址表达式 ;取其偏移地址来初 ;始化变量 地址表达式 ;取16位偏移地址和段 ;基址来初始化其变量
[变量名]
DF
地址表达式 ;取32位偏移地址和段
11
1.3 变量
3.变量的属性
(1)段基址—定义变量所在段的段首地址的高16位 由SEG算符指定 如: SEG W ;取变量W的段基址 (2)偏移地址—变量所在段的段首址到该变量的字节 距离.由OFFSET算符指定
如: OFFSET W ;取变量W的偏移地址
(3)类型—存取该变量中数据的字节数
变量的类型有:字节(byte),字(word),双字 (dword),四字(qword),十字节(tbyte),一个 数据分别占1,2,4,8,10个字节单元
汇编——机器只能识别机器指令,所以需要将符号指 令翻译成机器指令,翻译的过程称作汇编。 汇编程序——完成汇编任务的程序。
3
汇编语言源程序——用符号指令书写的程序。
1E 2BC0 50 B84D14 8ED8 PUSH DS SUB AX,AX PUSH AX MOV AX,144DH MOV DS,AX
1.2 标号
标号→指令地址的符号表示,也可以是过程名 标号定义的方式有两种: (1)书写在符号指令前,用:定义,为NEAR类型, NEAR型标号只能在段内使用! 例: CYCLE:MOV AL,[SI] ;定义近标号CYCLE (2)用PROC…ENDP伪指令定义过程名 例:ABC PROC FAR ;定义过程名ABC为FAR型标号 ABC ENDP 9
数据定义伪指令指明了变量的类型 表达式确定变量的初值。表达式有如下6种: 13
1.3 变量