汇编语言第6章答案

合集下载

第6章 8086指令系统与汇编基础

第6章 8086指令系统与汇编基础

第13页
2013年8月1日星期四
第6章
8086指令系统与汇编基础 3.段地址寄存器
有 CS、DS、ES、SS 四 个 , 分 别 表 示 程 序 码 ( code segment register)、 数 据 ( data segment register)、附加(extra segment register)、堆栈 (stack segment register)段地址用。在 DOS 系统 中,每一个段地址容量只有 64KBytes。 当数据段地址不够用时,就可以用附加数据段地址 来补足,例如想要将一个段地址的某些内容复制到 另一段地址中,就可以同时指定 DS、ES 分别表示 这两个段地址。
第17页 2013年8月1日星期四
第6章
6.2.4
8086指令系统与汇编基础
寄存器间接寻址(Register Indirect Addressing) 寄存器间接寻址方式中,操作数存放在存储器 中,但操作数的有效地址EA在基址寄存器BX、BP或 变址寄存器SI、DI中。操作数的物理地址为: 物理地址=16(段寄存器)+(寄存器)
执行结果为:(AX)=8060H 指令中也可指定段跨越前缀以取得其它段中的 数据。如:MOV AX,ES:[BX]指令,则从附加段中 取得数据。
操作码
DS 3000 0 BX + 200 0
代 码

30000 32000 AH AL
60 80
3200 0
数 据

图 6- 2- 2
例 6 - 5 的执行过程
第3页 2013年8月1日星期四
第6章
8086指令系统与汇编基础
计算机只能识别二进制代码,因此计算机能执行 的指令必须以二进制代码的形式表示,这种以二进制 代码形式表示的指令称为指令的机器码(Machine Code)。 2.汇编指令格式 一条指令一般包含操作码和操作数两部分。

第06章-单片机串行通信系统-习题解答

第06章-单片机串行通信系统-习题解答

第6章单片机串行通信系统习题解答一、填空题1.在串行通信中,把每秒中传送的二进制数的位数叫波特率。

2.当SCON中的M0M1=10时,表示串口工作于方式 2 ,波特率为 fosc/32或fosc/64 。

3.SCON中的REN=1表示允许接收。

4.PCON 中的SMOD=1表示波特率翻倍。

5.SCON中的TI=1表示串行口发送中断请求。

6.MCS-51单片机串行通信时,先发送低位,后发送高位。

7.MCS-51单片机方式2串行通信时,一帧信息位数为 11 位。

8.设T1工作于定时方式2,作波特率发生器,时钟频率为11.0592MHz,SMOD=0,波特率为2.4K时,T1的初值为 FAH 。

9.MCS-51单片机串行通信时,通常用指令 MOV SBUF,A 启动串行发送。

10.MCS-51单片机串行方式0通信时,数据从 P3.0 引脚发送/接收。

二、简答题1.串行口设有几个控制寄存器?它们的作用是什么?答:串行口设有2个控制寄存器,串行控制寄存器SCON和电源控制寄存器PCON。

其中PCON 中只有PCON.7的SMOD与串行口的波特率有关。

在SCON中各位的作用见下表:2.MCS-51单片机串行口有几种工作方式?各自的特点是什么?答:有4种工作方式。

各自的特点为:3.MCS-51单片机串行口各种工作方式的波特率如何设置,怎样计算定时器的初值? 答:串行口各种工作方式的波特率设置:工作方式O :波特率固定不变,它与系统的振荡频率fosc 的大小有关,其值为fosc/12。

工作方式1和方式3:波特率是可变的,波特率=(2SMOD/32)×定时器T1的溢出率 工作方式2:波特率有两种固定值。

当SM0D=1时,波特率=(2SM0D/64)×fosc=fosc/32当SM0D=0时,波特率=(2SM0D/64)×fosc=fosc/64计算定时器的初值计算:4.若fosc = 6MHz ,波特率为2400波特,设SMOD =1,则定时/计数器T1的计数初值为多少?并进行初始化编程。

第6章-MCS-51定时计数器

第6章-MCS-51定时计数器
TMOD用于设置其工作方式、选择定时或计数功能; TCON用于控制其启动、中断申请以及作为运行状态的 标志等。
1.定时/计数器工作方式寄存器TMOD TMOD为T0、T1的工作方式寄存器,主要用于控制定
时/计数器T0和T1的工作模式和4种工作方式。低4位用于 控制T0,高4位用于控制T1。
门控 位
在单片机应用中,定时和计数的需求比较多,为了使用 方便并增加单片机的功能,就把定时电路集成到芯片中,称 之为定时/计数器。目前,几乎所有的单片机都集成了可编 程定时/计数器,为单片机提供定时和计数功能。
6.1.1 定时/计数器的结构 MCS-51 单片机内部有两个16位的可编程定时/计数器,称为
定时器0(T0)和定时器1(T1),都具有定时和计数的功能,可 编程选择其作为定时器或作为计数器用。 TMOD:选择定时器/计数器T0、T1的工作模式和工作方式。 TCON:控制T0、T1的启动和停止计数,同时包含了T0、T1的状态。
Hale Waihona Puke ⑵ 工作方式1: T0初值 =216-500s/2s=65536–250=65286=FF06H TH0=FFH;TL0=06H。
⑶ 工作方式2: T0初值 =28-500s/2s=256-250=6 TH0=06H;TL0=06H。
⑷ 工作方式3: T0方式3时,被拆成两个8位定时器,定时初值可分别计
定时器:对片内机器时钟(周期方波)进行计数 计数器:对Tx引脚输入的负脉冲进行计数
6.1.2 定时/计数器的工作原理
单片机内部有两个定时/计数器T0和T1,其核心是计数器, 基本功能是加1。
对外部事件脉冲(下降沿)计数,是计数器;对片内机周 脉冲计数,是定时器。
计数器由二个8位计数器组成。

《汇编语言》各章习题答案

《汇编语言》各章习题答案

汇编语言各章习题答案习题一答案:1.1无符号数: 11010011=211=D3H,01110111=119=77H,10000011=131=83H,00101111=47=2FH,10101010=170=AAH带符号数:11010011= -45=D3H,01110111=+119=77H,10000011= -125=83H,00101111=+47=2FH,10101010= -86=AAH1.2 5E8AH,0BE6H,3DEH,4940H1.3 00011101+00110101=01010010=52H=8201001001+11101000=00110001=31H=4910111110+01010010=00010000=10H=1610011010+11110001=10001011=8BH= -1171.4 00101001+01010011=01111100+00000110=10000010=82H=8201110011-00100100=01001111-00000110=01001001=49H=4901100110+00011000=01111110+00000110=10000100=84H=840000000100110010+01110101=0000000110100111+00000110=0000001000000111=0207H=2071.5 000020A3H,FF94H,00003456H,007FH,FFFFEC00H1.6无符号数:0~65535,0000H~FFFFH;带符号数:-32768~+32767,8000H~7FFFH 1.7 (1) 38H等于十进制数56,是十进制数56的补码,数字8的ASCII码,十进制数38的压缩BCD码(2) FFH等于十进制数-1,是带符号数-1的补码,无符号数为255(3) 5AH等于十进制数90,是十进制数90的补码,大写字母Z的ASCII码(4) 0DH等于十进制数13,是十进制数13的补码,回车符的ASCII码1.8(1) 108=01101100B=6CH,补码01101100B,压缩BCD码0000000100001000,ASCII码313038H(2) 46=00101110B=2EH,补码00101110B,压缩BCD码01000110,ASCII码3436H(3) –15=11110001B=F1H,补码11110001B,ASCII码2D3135H(4) 254=0000000011111110B=00FEH,补码0000000011111110B,压缩BCD码0000001001010100,ASCII码323534H1.9(1) 56+63=01110111B,CF=0,SF=0,ZF=0,OF=0(2) 83-45=00100110B,CF=0,SF=0,ZF=0,OF=0(3) -74+29=11010011B,CF=0,SF=1,ZF=0,OF=0(4) -92-37=01111111B,CF=1,SF=0,ZF=0,OF=11.10回车、换行、响铃、ESC键、空格键、@、P、p习题二答案:2.9最少划分为16个逻辑段,最多划分为65536个逻辑段(每段16个字节)2.10CS:IP,DS:BX、SI、DI,ES:BX、SI、DI,SS:SP、BP2.11字节单元保存8位数,字单元保存16位数。

第6章程序设计语言习题与答案

第6章程序设计语言习题与答案

第六章习题(1)复习题1、简述自然语言与形式语言的概念以及区别、汇编语言与机器语言的概念及区别。

自然语言是某一社会发展中形成的一种民族语言,而形式语言是进行形式化工作的元语言,它是以数学和数理逻辑为基础的科学语言。

用机器指令形式编写的程序称为机器语言,用带符号或助记符的指令和地址代替二进制代码成为语言进化的目标。

这些使用助记符语言的语言后来就被称之为汇编语言。

(P135P136)2、什么是高级程序设计语言?它有什么特点?高级语言是汇编语言的一种抽象。

高级语言的设计目标就是使程序员摆脱汇编语言细节的繁琐。

高级语言同汇编语言都有一个共性,那就是:它们必须被转化为机器语言,这个转化的过程称为解释或编译。

(1)高级语言接近算法语言,易学、易掌握;(2)高级语言设计出来的程序可读性好,可维护性强,可靠性高;(3)高级语言与具体的计算机硬件关系不大,其程序可移植性好,重用率高;(4)高级语言自动化程度高,开发周期短,利于提高程序的质量。

(P138)3、列举程序设计语言的几种范型。

程序语言大致分为命令式程序设计语言、面向对象的程序设计语言、函数式程序设计语言和逻辑型程序设计语言等范型。

(P138-140)4、简述语言虚拟机。

提示:语言虚拟机是某种语言的解释器。

语言虚拟机是建立在硬件和操作系统之上,针对不同的硬件和操作系统有不同的虚拟机,通过语言虚拟机屏蔽掉硬件的差异。

这样使得硬件系统能够支持这种语言编写的程序的有效执行。

目前最流行的语言虚拟机是Java虚拟机。

(P147)5、计算机执行用高级语言编写的程序有哪些途径?它们之间的主要区别是什么?提示:主要有编译、解释等方式,也有两种方式的混合使用的形式。

编译是使用编译器将高级语言编写的源程序转换成计算机可以执行的机器语言可执行程序,也可以理解为用编译器产生可执行程序的动作。

编译方式是一次编译,然后执行程序可以反复多次执行。

解释是另一种将高级语言转换为可执行程序的方式。

第6章软件编码一、填空题(20小题)1、源程序中加注释是帮助理解程序

第6章软件编码一、填空题(20小题)1、源程序中加注释是帮助理解程序

第6章软件编码一、填空题(20小题)1、源程序中加注释是帮助理解程序的重要手段,注释分为( )、( )两类。

答案:序言性注释、功能性注释2、通常考虑选用语言的因素有( )、( )、( )、( )和( )。

答案:项目的应用领域、软件开发的方法、软件执行环境、算法与数据结构的复杂性、软件开发人员的知识3、从软件工程的观点,语言的工程特性是指( )、( )、( )和( )。

答案:可移植性、开发工具的可利用性、软件的可重用性、可维护性4、编写操作系统、编译系统等系统软件时,可选用( )、( )、( )和( )等。

答案:汇编语言、C语言、Pascal语言、Ada语言5、效率是一个( )要求,目标在( )给出。

答案:性能、需求分析6、提高程序效率的根本途径在于选择良好的( )、良好的( ),而不是靠编程时对程序语句做调整。

答案:设计方法、数据结构与算法7、语句构造的原则是( ),不能为了追求效率而使代码( )。

答案:简单直接、复杂化8、程序设计语言的心理特性在语言中的表现形式为( )、( )、( )、( )和( )。

答案:歧义性、简洁性、局部性、顺序性、传统性9、语言的心理特性在语言中的表现形式有:( )、( )、( )、( )和( )。

答案:歧义性、简洁性、局部性、顺序性、传统性10、程序设计语言的简洁性是指人们必须记住的( )的数量。

人们要掌握一种语言,需要记住的成分数量越多,简洁性越( )。

答案:语言成分、差11、在软件的设计中占有极其重要地位的是软件功能结构,它是联系( )跟开发者的规格说明。

答案:用户12、贯穿于软件生存期中的一个极为重要的问题是( )。

答案:软件质量13、为了做好软件质量评价,必须在( )定义其质量需求。

答案:开发前14、在McCall 质量度量模型中,针对面向软件产品的运行、修改、转移,软件质量概念包括11个特性,面向软件产品操作的5个特性是:( )、( )、( )、( )和( )。

《汇编语言》作业答案

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位二进制补码计算下列各题,并用十六进制数表示其运算结果。

第6章软件编码一、填空题(20小题)1、源程序中加注释是帮助理解程序

第6章软件编码一、填空题(20小题)1、源程序中加注释是帮助理解程序的重要手段,注释分为( )、( )两类。

答案:序言性注释、功能性注释2、通常考虑选用语言的因素有( )、( )、( )、( )和( )。

答案:项目的应用领域、软件开发的方法、软件执行环境、算法与数据结构的复杂性、软件开发人员的知识3、从软件工程的观点,语言的工程特性是指( )、( )、( )和( )。

答案:可移植性、开发工具的可利用性、软件的可重用性、可维护性4、编写操作系统、编译系统等系统软件时,可选用( )、( )、( )和( )等。

答案:汇编语言、C语言、Pascal语言、Ada语言5、效率是一个( )要求,目标在( )给出。

答案:性能、需求分析6、提高程序效率的根本途径在于选择良好的( )、良好的( ),而不是靠编程时对程序语句做调整。

答案:设计方法、数据结构与算法7、语句构造的原则是( ),不能为了追求效率而使代码( )。

答案:简单直接、复杂化8、程序设计语言的心理特性在语言中的表现形式为( )、( )、( )、( )和( )。

答案:歧义性、简洁性、局部性、顺序性、传统性9、语言的心理特性在语言中的表现形式有:( )、( )、( )、( )和( )。

答案:歧义性、简洁性、局部性、顺序性、传统性10、程序设计语言的简洁性是指人们必须记住的( )的数量。

人们要掌握一种语言,需要记住的成分数量越多,简洁性越( )。

答案:语言成分、差11、在软件的设计中占有极其重要地位的是软件功能结构,它是联系( )跟开发者的规格说明。

答案:用户12、贯穿于软件生存期中的一个极为重要的问题是( )。

答案:软件质量13、为了做好软件质量评价,必须在( )定义其质量需求。

答案:开发前14、在McCall 质量度量模型中,针对面向软件产品的运行、修改、转移,软件质量概念包括11个特性,面向软件产品操作的5个特性是:( )、( )、( )、( )和( )。

第6章 C语言和汇编语言混合编程(C55x DSP)


第6章 C语言和汇编语言混合编程
2. 编译模式 使用C编译器,在进入汇编程序时,C55x的CPL(编译模 式位)自动被置1,相对寻址模式使用堆栈指针SP。如果在汇 编程序中需要使用相对直接寻址模式访问数据存储器,则必 须改成数据页DP直接寻址模式,这可以通过清CPL位实现。 在返回C调用程序前,CPL位必须重新置1。
序清单输入到这些文件当中,保存并将其添加到工程之中。
第6章 C语言和汇编语言混合编程
3. 编译链接工程和装载输出文件 编译链接工程,修改错误,直到无错误信息提示为止, 再装载输出文件。 4. 打开CPU寄存器视窗 在主菜单中选择View→Registers→CPU Registers命令, 打开CPU寄存器视窗,观察CPU寄存器的变化情况。
int s4; s4=sum(); s1=mac1(x,a,n); //*ar0=x[0],*ar1=a[0],t0=n,return is stored in t0
s2=mac2(x,a,n);
//*ar0=x[0],*ar1=a[0],t0=n,return is stored in ac0
第6章 C语言和汇编语言混合编程
“ _ ”。以下是C函数调用汇编子程序的例子。
第6章 C语言和汇编语言混合编程
//C源程序: extern int sum(int *); //参考一个汇编函数 int x[4]={0x1223,0x345,0x2345,0x3444}; //定义全局变量并初始化
int s;
void main() {
参数类型和寄存器安排顺序表。
第6章 C语言和汇编语言混合编程
表6-1 参数类型和寄存器安排顺序表
第6章 C语言和汇编语言混合编程

汇编语言(王爽)第六章检测点与实验5

汇编语⾔(王爽)第六章检测点与实验5检测点6.1(1)依次⽤内存0:0~15单元中的内容改写程序中的数据,补全程序:assume cs:codesgcode segmentdw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987hstart:mov ax,0mov ds,axmov bx,0mov cx,8s:mov ax,[bx]mov cs:[bx],ax ;确定⽬标区域段地址和偏移地址add bx,2loop smov ax,4c00hint 21hcodesg endsend start(2)程序实现依次⽤0:0~15单元的内容改写程序中数据,数据传送⽤栈来进⾏。

栈空间设置在程序内,补全程序:assume cs:codesgcode segmentdw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987hdw 0,0,0,0,0,0,0,0,0,0;10个字空间作为栈start:mov ax,cs ;设置栈的段地址mov ss,axmov sp,1ah ;cs:0~cs:f为原始数据空间,cs:10~cs:19为栈空间,初始为空,栈顶指向下⼀单元mov ax,0mov ds,axmov bx,0mov cx,8s:push [bx] ;先把0:0处的字单元内容⼊栈pop cs:[bx] ;再把栈顶内容出栈放⼊程序数据段中add bx,2loop smov ax,4c00hint 21hcodesg endsend start实验5 编写、调试具有多个段的程序<程序加载后,ds:0~ff为PSP区域,(ds+10H):0为整个程序的⼊⼝,如程序依序设置有data\stack\code3个数据段区域,其中设data和stack段各⾃为16个字节,那么程序加载后(还未运⾏前):(ds+10h)则为data的⼊⼝段地址;(ds+10h+1)为stack的⼊⼝段地址;(ds+10h+2)为code的⼊⼝段地址;>1、编译连接下⾯程序,⽤debug加载、跟踪,回答问题。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
解答:不能。不能对EIP寄存器直接赋值。使用指令jmp done可以实现。
习题6
条件转移指令Jxx所利用的条件保存在何处?有多少个不同条件的转移指令?
保存在EFLAGES寄存器中
共16个(P107)
习题7
JA和JG指令发生跳转的条件都是“大于”,它们有什么区别?
在处理带符号值和无符号值时有所区别。计算无符号值时,使用JA,对于带符号值,使用JG。
CMP %ESI,%EAX JO overflow
(5)若ESI≤EAX,转到less_eq执行;
CMP %EAX,%ESI JLE less_eq
(6)若EDI≤EDX,转到below_eq执行。
CMP %EDX,%EDI JBE below_eq
11.
Pentium Pro处理器为IA-32指令系统增加了一条实用的条件传送指令CMOVxx,其中的条件xx与条件转移指令Jxx的条件xx相同。请用一条CMOV指令代替如下程序片断中的条件转移指令和其后的传送指令(含标号):

习题1.指令指针EIP是通用寄存器还是专用寄存器?有指令能够直接给它赋值吗?哪些指令的执行会改变它的值?
解答:EIP是专用寄存器,不能通过指令直接给它赋值。可以改变其值的指令有:
(1)无条件分支,包括:跳转(jmp)、调用(call)、中断(int)。
(2)条件分支,与标志位CF、OF、PF、SF、ZF相关的条件跳转指令。
(1)
decl %ecx
jz contiune
movl %eax,%ebx
contiune:
(2)
addl $1,%ecx
jnc contiune
movl %eax,%ebx
contiune:
(3)
cmpl %ebx,%eax
jbe contiune
movl %eax,%ebx
contiune:
解答
(3)循环指令,LOOP、LOOPE等。
3.
相对于BASIC语言中GOTO语句作用的IA-32处理器指令是哪条?
跳转指令jmp
习题4.
IA-32处理器通过改变EIP寄存器的数值就可以改变程序,如果程序需要无条件跳转到标号done位置执行,使用“MOVL done, %EIP”语句是否可以达到,为什么?如果不能实现该功能,应该使用哪条指令?
(1)若EDX > EDI,转到above执行;
CMP %EDI,%EDX JA above
(2)若EAX > ESI,转到greater执行;
CMP %ESI,%EAX JG greater
(3)若ECX = 0,转到zero执行;
CMP $0,%ECX JE zero
(4)若EAX-ESI产生溢出,转到overflow执行;
习题8.执行如下程序片断后,CMP指令分别使得5个状态标志CF、ZF、SF、OF和PF为0还是为1?它会使得哪些条件转移指令条件成立、发生转移?
movl $0x20, %eax
movl $0x80, %ebx
cmpl %ebx,%ea得发生转移的指令有:JC JS JP JNZ JNO
习题13.
请问如下LOOP指令执行了多少次?
movl $0, %ecx
repeat:loop repeat
解答:
loop执行时,先将ecx中的值减1,使之变为-1(0xFFFFFFFF),然后进行判断是否为0。这里32位整数的最大值为232,故loop执行了232次。
14.
请用两条指令实现JECXZ指令的功能。
cmp $0,%ecx
je address
(1)CMOVNZ %eax, %ebx
(2)CMOVC %eax, %ebx
(3)CMOVA %eax, %ebx
12.
现代处理器当中,简单的多条指令常比一条复杂的指令执行速度快。例如,GCC编译器就不使用LOOP指令,而是使用与其功能相同的两条指令,这两条指令是什么?
dec %ecx
jnz loop
习题9.有如下程序片断,请使用一条指令代替其中的两条指令:
(1)
again:
...
jz next
jmp again
next:
(2)
again:
...
jle next
jmp again
next:
解答:(1)jnz again
(2)jg again
10.
假设EAX和ESI存放的是有符号整数,EDX和EDI存放的是无符号整数,请用比较指令和条件转移指令实现以下判断:
相关文档
最新文档