汇编语言第三章 宏汇编语言

合集下载

汇编语言程序设计(第四版)第3章【课后答案】

汇编语言程序设计(第四版)第3章【课后答案】

汇编语言程序设计第四版【课后习题答案】--囮裑為檤第3章汇编语言程序格式〔习题3.1〕伪指令语句与硬指令语句的本质区别是什么?伪指令有什么主要作用?〔解答〕伪指令语句与硬指令语句的本质区别是能不能产生CPU动作;伪指令的作用是完成对如存储模式、主存变量、子程序、宏及段定义等很多不产生CPU动作的说明,并在程序执行前由汇编程序完成处理。

〔习题3.2〕什么是标识符,汇编程序中标识符怎样组成?〔解答〕为了某种需要,每种程序语言都规定了在程序里如何描述名字,程序语言的名字通常被称为标识符;汇编语言中的标识符一般最多由31个字母、数字及规定的特殊符号(如-,$,?,@)组成,不能以数字开头。

〔习题3.3〕什么是保留字,汇编语言的保留字有哪些类型,并举例说明。

〔解答保留字是在每种语言中规定了有特殊意义和功能的不允许再做其它用处的字符串;汇编语言的保留字主要有硬指令助记、伪指令助记符、运算符、寄存器名以及预定义符号等。

汇编语言对大小写不敏感。

如定义字节数和字符串的DB就是伪指令助记符。

〔习题3.4〕汇编语句有哪两种,每个语句由哪4个部分组成?〔解答〕汇编语句有执行性语句和说明性语句;执行性语句由标号、硬指令助记符、操作数和注释四部分组成;说明性语句由名字、伪指令助记符、参数和注释四部分组成〔习题3.5〕汇编语言程序的开发有哪4个步骤,分别利用什么程序完成、产生什么输出文件。

〔解答〕⒈编辑文本编辑程序汇编语言源程序.asm⒉汇编汇编程序目标模块文件.obj⒊连接连接程序可执行文件.exe或.com⒋调试调试程序应用程序〔习题3.6〕区分下列概念:(1)变量和标号(2)数值表达式和地址表达式(3)符号常量和字符串常量〔解答〕(1)变量是在程序运行过程中,其值可以被改变的量;标号是由用户自定义的标识符,指向存储单元,表示其存储内容的逻辑地址。

(2)数值表达式一般是由运算符连接的各种常数所构成的表达式,地址表达式是由名字、标号以及利用各种的操作符形成的表达式。

汇编语言第三章答案

汇编语言第三章答案

3.1 给定(BX)=637DH,(SI)=2A9BH,位移量D=7237H,试确定在以下各种寻址方式下的有效地址是什么?(1) 立即寻址(2) 直接寻址(3) 使用BX的寄存器寻址(4) 使用BX的简接寻址(5) 使用BX的寄存器相对寻址(6) 基址变址寻址(7) 相对基址变址寻址答:(1) 操作数在指令中,即立即数;(2) EA=D=7237H;(3) 无EA,操作数为(BX)=637DH;(4) EA=(BX)=637DH;(5) EA=(BX)+D=0D5B4H;(6) EA=(BX)+(SI)=8E18H;(7) EA=(BX)+(SI)+D=1004FH;超过了段的边界,最高进位位丢失,因此EA=004FH。

3.2 试根据以下要求写出相应的汇编语言指令(1) 把BX寄存器和DX寄存器的内容相加,结果存入DX寄存器中。

(2) 用寄存器BX和SI的基址变址寻址方式把存储器中的一个字节与AL寄存器的内容相加,并把结果送到AL寄存器中。

(3) 用寄存器BX和位移量0B2H的寄存器相对寻址方式把存储器中的一个字和(CX)相加,并把结果送回存储器中。

(4) 用位移量为0524H的直接寻址方式把存储器中的一个字与数2A59H相加,并把结果送回存储单元中。

(5) 把数0B5H与(AL)相加,并把结果送回AL中。

答:(1) ADD DX, BX(2) ADD AL, [BX][SI](3) ADD [BX+0B2H], CX(4) ADD WORD PTR [0524H], 2A59H(5) ADD AL, 0B5H3.3 写出把首地址为BLOCK的字数组的第6个字送到DX寄存器的指令。

要求使用以下几种寻址方式:(1) 寄存器间接寻址(2) 寄存器相对寻址(3) 基址变址寻址答:(1) MOV BX, OFFSET BLOCKADD BX, (6–1)*2MOV DX, [BX](2) MOV BX, OFFSET BLOCK 改为:MOV BX, (6-1)*2MOV DX, [BX+(6–1)*2] 也可MOV DX, BLOCK[BX](3) MOV BX, OFFSET BLOCKMOV SI, (6–1)*2MOV DX, [BX][SI]3.4 现有(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100H)=12H,(20101H)=34H,(20102H)=56H,(20103H)=78H,(21200H)=2AH,(21201H)=4CH,(21202H)=B7H,(21203H)=65H,试说明下列各条指令执行完后AX寄存器的内容。

汇编语言程序设计(第四版)【课后答案】

汇编语言程序设计(第四版)【课后答案】

汇编语言程序设计第四版【课后习题答案】第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〕汇编语言与高级语言相比有什么优缺点?〔解答〕汇编语言与高级语言相比的优点:由于汇编语言本质就是机器语言,它可以直接地、有效地控制计算机硬件,因而容易产生运行速度快,指令序列短小的高效目标程序,可以直接控制计算机硬件部件,可以编写在“时间”和“空间”两方面最有效的程序。

第三章 汇编语言程序设计

第三章  汇编语言程序设计

第3章 汇编语言程序设计 章
3.2 汇编语言源程序的格式
பைடு நூலகம்
名字: 名字:变量和标号
变量名 段名 过程名:指示性语句中的名字.内存单元的名 变量名/段名 过程名:指示性语句中的名字. 段名/过程名
定义. BUF DB ? 字,由DB/DW/DD定义. 由 定义 变量的三种属性: 变量的三种属性: 段值 SEG 偏移量 OFFSET 类型 BYTE/WORD/DWORD 标号:指令性语句中的名字.指令存放单元的符号地址. 标号:指令性语句中的名字.指令存放单元的符号地址. LOOPER: MOV AL,DATA[SI] 标号的三种属性: 标号的三种属性: 段值 SEG 偏移量 OFFSET 类型 NEAR/FAR 对于汇编程序来说,变量和标号都是存储单元的符号地址. 注:对于汇编程序来说,变量和标号都是存储单元的符号地址. 只是标号对应的存储单元中存放的是指令, 只是标号对应的存储单元中存放的是指令,而变量所对应的 存储单元存放的是数据. 存储单元存放的是数据.
令和数据. 令和数据. 汇编语言(Assenbly Lauguage):用助记符来编写 汇编语言( Lauguage): 指令,地址和数据也可用符号表示. 指令,地址和数据也可用符号表示.用汇编语言 编写的程序必须翻译成机器语言目标程序( 编写的程序必须翻译成机器语言目标程序(或目 标代码)才能执行,这种翻译过程称为汇编 汇编. 标代码)才能执行,这种翻译过程称为汇编. 高级语言:不针对某个具体的计算机,通用性强. :不针对某个具体的计算机,通用性强. 但高级语言编写的源程序同样必须"翻译" 但高级语言编写的源程序同样必须"翻译"成机 器语言,计算机才能执行, 器语言,计算机才能执行,所用的系统软件称为 编译程序或解释程序. 编译程序或解释程序.

第三章 汇编语言程序及实现

第三章 汇编语言程序及实现

2013-8-13
河南师范大学计算机与信息技术学院
29
汇编语言程序设计——方法、技术、应用
2. 属性指定操作
格式:THIS 类型名 利用THIS说明的操作数具有汇编时的当前逻辑地址,但具有指 定的类型。 LABEL伪指令的功能等同于‚EQU THIS‛。
示例1
示例2
2013-8-13
河南师范大学计算机与信息技术学院
河南师范大学计算机与信息技术学院
25
汇编语言程序设计——方法、技术、应用
运算符的优先级
1 2 3 4 5 6 7 8 9 10 () <> [] · LENGTH SIZE WIDTH MASK PTR OFFSET SEG TPYE THIS : HIGE LOW * / MOD SHL SHR + EQ NE GT LT GE LE NOT AND 建议采用圆括号‚()‛ OR XOR 显式表达,它可以极大 SHORT 地提高程序的可阅读性。

2013-8-13
河南师范大学计算机与信息技术学院
13
汇编语言程序设计——方法、技术、应用
1.常量
常量表示一个固定的数值。不占存储空间。
常量在程序中可以直接出现,对于经常使用的常量可以定义为符号常量。 常量在伪指令语句中主要用于给变量赋初值,在指令语句中常用作立即 数及存储器寻址方式中的位移量。 数值常量可以是二、八、十、十六进制数。 字符常量是将字符用单引号或双引号界定; 字符串常量是将字符串用单引号或双引号引起,单引号字符本身用连 续两个单引号引起。 各种符号的属性值可作为常量使用,称为属性常量。
2013-8-13
河南师范大学计算机与信息技术学院
28
汇编语言程序设计——方法、技术、应用

计算机接口技术课件 第三章 MCS-51单片机汇编语言与程序设计基础

计算机接口技术课件 第三章 MCS-51单片机汇编语言与程序设计基础

例2:编制一段程序,要求在端口线 :编制一段程序,要求在端口线P1.0,P1.1上分别产生周期为 , 上分别产生周期为 200us和400us的方波.设单片机的外接频率为 的方波. 和 的方波 设单片机的外接频率为12MHz. . 分析:利用定时器产生方波,将定时器设置成为工作方式 , 分析:利用定时器产生方波,将定时器设置成为工作方式3,将寄 存器T0定时 定时100us,T1定时 定时200us,达到定时时间后引起中断,在中 存器 定时 , 定时 ,达到定时时间后引起中断, 断服务程序中各自将P1.0和P1.1引脚取反. 引脚取反. 断服务程序中各自将 和 引脚取反 定时器预设值的设置: 定时器预设值的设置: 单片机的晶体振荡频率为12MHz,计时器的计时频率为1MHz,机 单片机的晶体振荡频率为 ,计时器的计时频率为 , 器周期为1us. 定时 定时100us,因此寄存器 需要计数 需要计数100次 器周期为 . T0定时 ,因此寄存器T0需要计数 次 ,其预 置值为64H+1=9CH. T1定时 定时200us,因此寄存器 需要计数 需要计数200次 置值为 . 定时 ,因此寄存器T1需要计数 次 其预置值为C8H+1=38H. ,其预置值为 . 定时器T0,T1的工作方式设置: 的工作方式设置: 定时器 的工作方式设置 T0采用工作方式 ,因此 采用工作方式3,因此TMOD寄存器的值设置为 寄存器的值设置为#22H. 采用工作方式 寄存器的值设置为 . 定时器T0,T1的控制设置: 的控制设置: 定时器 的控制设置 打开T0, ;要求TCON寄存器的值设置为 寄存器的值设置为#50H. 打开 ,T1;要求 寄存器的值设置为 .
定义存储区域的大小. 6. DS —定义存储区域的大小. 定义存储区域的大小 例: ORG 0350H DS 3

汇编语言(微机)第三章

汇编语言(微机)第三章
21
汇编语言源程序的格式
一般情况下,定位类型、组合类型和类别说明可以 不用。 注意:SEGMENT和ENDS语句必须成对使用。 例:定义一数据段DATA
DATA SEGMENT A DB '1234' B DW 12H
DATA ENDS
22
汇编语言源程序的格式
(2)偏移地址定位语句 ORG 格式:ORG 数值表达式 功能:指定在它之后的程序段或数据块所存放的起始地 址的偏移量。
SUB1: ?
RESU: ?

31
汇编语言源程序的格式
④ 用DUP重复因子初始化一个数据区
格式:N DUP (表达式)
?、数值、
数值表达式
重复次数 重复装入的内容
字符等
例1: DA1 DB 2 DUP(0) DA2 DB 2 DUP(‘AB’) DA3 DW 2 DUP(1)
DA1
00
00
DA2
41
LOP: ADD AL,[BX] ADC AH,0 INC BX LOOP LOP MOV [DI] ,AX MOV AH ,4CH INT 21H
CODE ENDS END START
9
汇编语言源程序的格式
汇编语言源程序的格式
二、指令性语句 [标号:] 操作码 [操作数] [;注释项]
操作码:指明操作的性质,说明计算机要执行的具体操 作。用助记符表示。
第三章:8086汇编语言程序设计
主讲教师:范新民
整理ppt
1
8086汇编语言程序设计
1 3.2.1 汇编语言源程序的格式 2 3.2.2 常量、标识符和表达式 3 3.2.3 指示性语句 4 3.2.4 指令性语句 5 3.2.5 宏指令

第3章 汇编语言程序设计

第3章 汇编语言程序设计
ES:ESEG
START PROC FAR MOV AX,DSEG MOV DS,AX MOV AX,ESEG MOV ES,AX ;-----------------------------------------------------微机原理 汇编语言程序设计(8)
MOV AH,4CH INT 21H 指令构成的管理性语句,其对 START ENDP 应的伪操作是在汇编过程中完 CSEG ENDS 成的,汇编后不产生机器代码。 ;--------------------------------------------
MESG
43 45 4C 4C
H E L L O
DB ‘AB’ DW ‘AB’
41
A
42 42 41
B B A
微机原理 汇编语言程序设计(31)
• 操作数?可以保留存储空间但 不存入数据. ABC DB 0,?,?,?,0 DFF DW ?,52,? • 经汇编后存储情况如图所示.
ABC
00
微机原理 汇编语言程序设计(15)
• 段定义伪操作SEGMENT/ENDS 格式如下: segment-name SEGMENT … segment-name ENDS 其中删节号部分,对于DS、ES和SS来说,一般是存贮 单元的定义、分配等伪操作;对于代码段则是指令 及伪操作。
微机原理 汇编语言程序设计(16)
汇编语言的语句格式
• 汇编语言源程序中的每个语句可以由4项组成, 格式如下 [名字项] 操作项 操作数项 ;注释项 AGAIN: MOV AL, [SI] ;取加数 A DB ‗ABCDEFG‘
微机原理 汇编语言程序设计(9)
名字项
• 源程序中用下列字符表示名字: • 字母:A~Z或a~z; • 数字:0~9; • 专用字符号:?、• 、@、―、$; • 名字项可以是标号或变量。

华中科技大学8086汇编讲义第三章宏汇编语言

华中科技大学8086汇编讲义第三章宏汇编语言

第三章宏汇编语言每种计算机语言都规定了自己的字符、基本词汇、典型语句和语法规则。

同样,汇编语言也有自己的字符、基本词汇、典型语句和语法规则。

字符:ASCII字符基本词汇:符号指令(MOV、ADD)伪指令(DB、SEGMENT等)典型语句:●机器指令语句——对应机器指令的一种操作。

●伪指令语句——无机器语言与之对应,不生成机器指令。

●宏指令语句——一条宏指令对应多条机器指令,产生一组目标代码。

语法规则:基本语法单位(常量、变量、标号、表达式)前面的例子已介绍了源程序的基本结构、格式、名字的定义、语句格式,下面将更深入地介绍有关语法规则。

3.1表达式汇编程序的语句及程序格式都比较固定,语句中除正确选择操作符之外,主要问题在于正确表示操作数地址,这涉及到寻址方式,可以归结到地址表达式的使用。

表达式:由常数、寄存器、标号、变量加上运算符构成的式子。

3.1.1.常量与数值表达式一.常量常量:从源程序翻译成目标程序期间已经有确定数值的量。

用途:赋值、作立即数、位移量。

由常量与运算符组成的式子。

数值表达式在汇编期间进行运算,结果为常量。

汇编期间允许对常量进行3种运算:1.算术运算包括:+、–、*、/、模除(MOD,取余数)、右移、左移。

2.逻辑运算●逻辑乘:AND(与)●逻辑加:OR(或)●按位加:XOR(异或)●逻辑非:NOT(非)3.关系运算包括:相等(EQ)、不等(NE)、小于(L T)、大于(GT)、小于等于(LE)、大于等于(GE)。

运算结果:关系不成立,结果为0;关系成立,结果为–1(0FFFFH)。

如:N = 50M = (N EQ 50)该关系成立,M =–1。

3.1.2.变量、标号与地址表达式一.变量变量:数据存贮单元的名字。

(存放地址的符号表示)。

变量有三个属性:段、EA、类型。

其中类型由定义时的伪指令确定(DB、DW、DD、DT)。

变量的定义:格式:[变量名] 数据定义伪指令表达式[,…]数据定义伪指令:DB、DW、DD、DQ、DT等。

汇编语言——宏

汇编语言——宏

【例7.14】形式参数还可以出现在变量定义伪操作的初值表 中,甚至是以字符串形式出现的初值。 msg MACRO num,pname 'HELLO, &pname'
var&num DB ENDM
汇编语言规定,字符串中的形参必须用分隔符“&”从其它 部分分离出来。对于下面两个宏调用, msg msg 1,John 2,Henrry
code
ENDS END main
【解】宏展开后的结果是: + + + + + + MOV MOV INT MOV MOV INT MOV INT AH,2 DL, '*' 21H AH,2 DL, '*' 21H AH,4CH 21H
由于宏展开是汇编程序翻译的一个步骤,宏展后的结果 并不是源程序,所以展开后不再写出完整的程序格式,只列 出有效指令部分。 可以看到,汇编程序对宏调用与已定义的常量及符号的 引用的处理是很类似的,定义部分在汇编处理结束后就已完 成它的作用。汇编程序翻译后得到的机器代码中没有宏、常 量等的定义,只是调用或引用部分被代换成宏体或定义的内 容。宏与常量定义及符号定义的差别在于,常量及符号定义 都必须在一行写完,对常量和符号的引用只能代换指令中的 操作数,或者操作数的一部分,宏调用则可以代换一段程序。 不仅如此,宏还允许代换的内容有个别地方不同,这是通过 带参数的宏实现的。
(3)宏定义仅仅用来告诉汇编程序,将来宏调用时复制 的对象是什么,宏定义中的程序段并不是程序的一部分,也 就是说,如果程序中定义了一个宏而没有调用它,汇编程序 将忽略宏定义。 (4)宏定义可以写在程序的任何地方,但习惯上总是把 宏定义写在程序的最前面。 宏定义与编辑器中的文字块的定义有相似之处,也有一 些差别。两者都需要以特定的方式说明开始和结束的位置。 文字块是文件的一部分,而宏体中的程序段必须经过宏调用 才能复制到源程序中正确的位置,没有被调用的宏体在汇编 程序翻译时会被忽略。

第三章 AVR汇编指令

第三章   AVR汇编指令

AVR 汇编语言系统

器件定义文件“m16def.inc” 函数

LOW(表达式) 返回一个表达式值的最低字节。 HIGH(表达式) 返回一个表达式值的第二个字节。 BYTE2(表达式) 与HIGH 函数相同。 BYTE3(表达式) 返回一个表达式值的第三个字节。 BYTE4(表达式) 返回一个表达式值的第四个字节。 LWRD(表达式) 返回一个表达式值的0~15 位。 HWRD(表达式) 返回一个表达式值的16~31 位。 PAGE(表达式) 返回一个表达式值的16~21 位。 EXP2(表达式) 返回(表达式值)2 次幂的值。 LOG2(表达式) 返回Log2(表达式值)的整数部分。
Rd,Rr Rd,Rr Rd,Rr Rd,Rr Rd,Rr
Rd,Rr
AVR指令系统-比较和跳转指令

无条件跳转指令

相对跳转 间接跳转 直接跳转 测试条件符合跳转指令

RJMP IJMP JMP
k k

条件跳转指令



状态寄存器中位为“1”跳转 状态寄存器中位为“0”跳转 相等跳转 不相等跳转 进位标志位C 为“1”跳转 进位标志位C 为“0”跳转
BRBS BRBC BREQ BRNE BRCS BRCC
s, s,
k k
k k
k k
AVR指令系统-比较和跳转指令



大于或等于跳转(对无符号数) 小于跳转(对无符号数) 结果为负跳转 结果为正跳转 大于或等于跳转(带符号数) 小于跳转(带符号数) 半进位标志为“1”跳转 半进位标志为“0”跳转 T 标志为“1”跳转 T 标志为“0”跳转 溢出标志为“1”跳转 溢出标志为“0”跳转 中断标志为“1”跳转 中断标志为“0”跳转

汇编语言程序设计习题答案

汇编语言程序设计习题答案

第一章微型计算机系统概述1.3习题与综合练习1.解释和区别下列名词术语(1)微处理器(MP):具有中央处理器功能的大规模集成电路器件微型计算机(MC)微型计算机系统(MCS)(2)硬件:硬件是计算机系统的躯体,由控制器,运算器,存储器,输入设备,输出设备5大部分组成。

软件:软件是计算机的头脑和灵魂,可分为系统软件和应用软件。

(3)字节:8位二进制是一个字节。

字:16位二进制构成一个字。

字长:计算机的运算部件能同时处理的二进制数据的位数。

(4)指令指针:存放BIU要取的下一条指令的偏移地址。

指令寄存器:指令译码器:状态寄存器:(5)存储单元:存储内容:存储地址:存储容量:(6)RAM:ROM:软件固化:2.冯·诺依曼计算机结构的特点是什么?(1)采用二进制数的形式表示数据和指令。

(2)将指令和数据存放在存储器中。

(3) 计算机硬件由控制器,运算器,存储器,输入设备和输出设备5大部分组成。

3.件数计算机系统中复杂指令集和精简指令集的特点和用途。

复杂指令集(CISC):在微型计算机的体系结构组成结构上是以复杂指令为设计的计算机,在指令的运行过程中按指令的复杂程度来指挥计算机完成各条指令,由于各条指令复杂程度不同分配的时钟周期各不相同,执行指令所需时间就不相同。

CISC体系的指令集由微程序来实现,即每一个操作由若干微操作的程序组合来实现。

所以CISC可以使用微指令编程的方式实现多种和功能复杂的指令。

精简指令系统(RISC):不管计算机的指令如何复杂,在一个计算机时钟周期内完成,计算速度快,指令集简单。

每一条指令直接有硬布线实现,即它的每条指令原则上有自己的一套逻辑时序电路直接实现,所以单条指令的实现所占用的硬件资源较多。

因为该体系没有能采用增加单条指令的功能或高位的指令语义,也没有增加指令的条数,而是集中于它的精简指令集上。

4.CPU是计算机系统中的重要部件,试说明CPU的结构和功能。

微处理器是计算机中最关键的部件,由控制器,运算器,寄存器组和辅助部件组成。

《微机原理及应用》课后答案(黄冰 覃伟年 著)习题参考答案

《微机原理及应用》课后答案(黄冰 覃伟年 著)习题参考答案

《微机原理》习题参考答案第一章绪论1.2①[+65]10=01000001B [+65]补=[+65]原=01000001B②[+115]10=01110011B [+115]补=[+115]原=01110011B③[-65]10=11000001B [-65]补=10111111B[-115]10=11110011B [-115]补=10001101B方法:正数的原码、反码、补码相同负数的补码在原码的基础上除过符号外,先取反,再加1。

1.3①[+120]10=0000000001111000B [+120]补=[+120]原=000000001111000B②[-120]10=1000000001111000B [-120]补=1111111110001000B③[+230]10=0000000011100110B [+230]补=[+230]原=0000000011100110B④[-230]10=1000000011100110B [-230]补=1111111100011010B方法:与上题相同,只是扩展了位数,用16位表示1.4①55 (00110111)②89 (01011001)③-115 (11110011)④-7总结:知道补码,求原码(或数值)的方法:如果是正数,直接转换。

如果是负数用以下三种方法:①根据[[X]补]补=X 求得例如10001101 各位取反11110010 加一11110011转换-115②求补的逆运算例如:11111001 先减一11111000 各位取反10000111 转换-7③-(模+补码转换结果)例如:10001101转换-13模+补码转换结果128-13=115 加负号–1151.9本题问题不太明确例如:如果手边有手册或是知道产品的型号,就可从手册中查到微处理器的处理位数。

也可以根据系统总线得知。

因为系统总线是公共的数据通道,表现为数据传输位数和总线工作时钟频率。

微机原理复习题集

微机原理复习题集

)。
A.(101001)2 B. (52)8 C. (01001001)BCD D. (23)16
6. 补码加减法是指(
)。
A.操作数 用补码表示 ,尾数直接 相加减,符 号位单独
处理,减法用加法替代; B.操作数 用补码表示 ,尾数、符 号位一同参 加运算,
结果的符号与加减相同; C.操作数 用补码表示 ,尾数、符 号位一同参 加运算,
标志位:OF=
, CF=
,
SF=
, ZF=

寄存器:AL=
H
2. 当前 SP=1230H,DS=1000H,BX=2000H,CX=4000H 分析
执行如下指令序列后,各寄存器的值。
PUSH DS
POP AX
PUSH BX
POP CX
ADD AX,1000H
PUSH AX
ADD BX,AX
(1)SP =
______。
4. 逻辑地址由段基址和______组成,将逻辑地址转换为
物理地址的公式是______。
5. 当存储器的读出时间大于 CPU 所要求的时间时,为了
保证 CPU 与存储器的周期配合,就要利用______信号,
使 CPU 插入一个______状态。
6. CPU 从主存取出一条指令并执行该指令的时间称为
5. 下面哪一种寻址方式操作数不是在存储器中:
( )。
A. 堆栈寻址
B. 寄存器间址
C. 寄存器寻址 D.直接寻址
6. 8086/8088 中有 AX 是( )寄存器。
A. 通用寄存器 B. 堆栈指针寄存器
C. 基址寄存器 D. 控制寄存器
7. 8086/8088 中源变址寄存器是( )。

汇编语言程序设计第三章习题答案

汇编语言程序设计第三章习题答案

第三章答案:3.1(1)立即数寻址代码段(2)寄存器寻址数据段(3)寄存器间址数据段(4)寄存器间址数据段(5)直接寻址数据段(6)直接寻址数据段(7)基址寻址堆栈段(8)直接寻址代码段(9)寄存器寻址数据段(10)变址寻址数据段(11)基址变址寻址数据段(12)基址变址寻址堆栈段(13)基址变址寻址堆栈段(14)基址变址寻址堆栈段3.2(1)直接寻址30000H+0ABCH=30ABCH(2)寄存器寻址(3)直接寻址30000H+2000H=32000H(4)基址寻址30000H+0100H+2000H=32100H(5)寄存器间址30000H+0100H=30100H(6)寄存器间址30000H+00A0H=300A0H(7)寄存器间址20000+0010H=20010H(8)基址变址寻址20000H+0010H+2000H+00A0H=220B0H (9)基址寻址30000H+0100H-40H=300C0H(10)变址寻址30000H+0040H+00A0H=300E0H(11)基址变址寻址30000H+0100H+0100H-0040H=301C0H (12)基址变址寻址20000H+00A0H+0100H+0010H=201B0H (13)变址寻址30000H+2000H+0002H=32002H(14)基址变址寻址41000H+2000H+0100H+0002H=43102H 3.3第一种:MOV AX,[02C0H]第二种:MOV AX,[BP]第三种:MOV AX,0240H[BX]第四种:MOV AX,0100H[DI]第五种:MOV AX,0220H[SI](只要物理地址为095C0H即可)3.4(1)错,类型不匹配(2)错,类型二义性(3)对(4)错,立即数不能直接送入段寄存器(5)错,字节单元无法存放PUSH的值(6)对(7)对(8)错,不能把数据从段寄存器传入段寄存器(9)错,源操作数与目的操作数不能同时为存储器操作数(10)错,操作数类型二义性(11)错,XCHG指令的两个操作数都不能为立即数(12)错,类型不匹配(13)错,操作数类型二义性(14)错,RCL移位不为1时,必须用CL寄存器来操作(15)错,不能传送入段寄存器CS(16)错,目的操作数不能为立即数(17)错,格式不正确(18)错,变址寄存器不能使用寄存器BP(19)错,基址寄存器不能使用寄存器SI(20)错,目的操作数必须为通用寄存器3.5(1)(CL)=0F6H(2)(1E4F6)=5678H(3)(BX)=0056H (AX)=1E40H(4)(SI)=00F6H (DS)=1E40H (1E4F6H)=0024H (5)(CX)=00F6H (AX)=5678H (09226H)=1234H 3.6MOV是数据传送指令,LEA是取地址指令。

汇编语言 第三章 实方式指令寻址与指令系统

汇编语言 第三章 实方式指令寻址与指令系统

3.2实方式32位指令寻址

实地址方式32位指令寻址,指在32位的PC机上使
用16位的存储机制,执行32位的非保护方式及非虚拟
方式的指令,达到直接存取32位寄存器和32位存储器
操作数的目的。
3.3实方式指令系统
指令系统是一台机器所有指令的集合。 Pentium系列 机指令系统庞大、类型多样,约有300多条指令,其中包 括基本指令100多条。 具有支持多进程、多任务、虚 拟存储器和多媒体等功能的32位指令。
设DS=4000H, 1、MOV AX,[3020H] 2、VAR DW 86
MOV AX,VAR 3、SI=1800H, MOV AX,[SI] 4、COUNT DW 5,6,7,8 SI=06H MOV AX,COUNT[SI]
3.1.3数据寻址与数据结构的 关系
多种寻址方式能方便、灵活的存取操作数, 支持高级语 言的某些数据结构。
寄存器间接寻址例
例:MOV AX,[BX] 设BX=1200H

MOV


偏移地址

1200H 22H

AH AL 11 22
11H


寄存器间接寻址
由寄存器间接给出操作数的偏移地址;
存放偏移地址的寄存器称为间址寄存器,它们是:BX, BP,SI,DI
操作数的段地址(数据处于哪个段)取决于选择哪一 个间址寄存器:
一、立即寻址
指令中的源操作数是立即数,即源操作数是参加操作 的数据本身
例:MOV AX,1200H
AH AL
MOV
00H

12H



寄存器寻址(Register Addressing)

汇编语言课后答案

汇编语言课后答案

汇编语言课后答案第一章. 习题用降幂法和除法将下列十进制数转换为二进制数和十六进制数:(1) 369 (2) 10000 (3) 4095 (4) 32767答:(1) 369=1 0111 0001B=171H(2) 10000=10 0111 0001 0000B=2710H(3) 4095=1111 1111 1111B=FFFH(4) 32767=111 1111 1111 1111B=7FFFH 将下列二进制数转换为十六进制数和十进制数:(1) 10 1101 (2) 1000 0000 (3) 1111 1111 1111 1111 (4) 1111 1111答:(1) 10 1101B=2DH=45(2) 1000 0000B=80H=128(3) 1111 1111 1111 1111B=FFFFH=65535(4) 1111 1111B=FFH=255将下列十六进制数转换为二进制数和十进制数:(1) FA (2) 5B (3) FFFE (4) 1234答:(1) FAH=1111 1010B=250(2) 5BH=101 1011B=91(3) FFFEH=1111 1111 1111 1110B=65534(4) 1234H=1 0010 0011 0100B=4660完成下列十六进制数的运算,并转换为十进制数进行校核:⑴ 3A+B7 (2) 1234+AF (3) ABCD-FE ⑷ 7AB X 6F答:(1) 3A+B7H=F1H=241(2) 1234+AFH=12E3H=4835(3) ABCD-FEH=AACFH=43727(4) 7AB X6FH=35325H=217893下列各数均为十进制数,请用8 位二进制补码计算下列各题,并用十六进制数表示其运算结果。

(1) (-85)+76 (2) 85+(-76) (3) 85-76 (4) 85-(-76) (5) (-85)-76 (6)-85-(-76)答:(1) (-85)+76=1010 1011B+0100 1100B=1111 0111B=0F7H ;CF=0;OF=0(2) 85+(-76)=0101 0101B+1011 0100B=0000 1001B=09H ;CF=1;OF=0(3) 85-76=0101 0101B-0100 1100B=0101 0101B+1011 0100B=0000 1001B=09H ;CF=0;OF=0(4) 85-(-76)=0101 0101B-1011 0100B=0101 0101B+0100 1100B=B=0A1H;CF=0;OF=1(5) (-85)-76=1010 1011B-0100 1100B=10101011B+10110100B=01011111B=5FH;CF=0;OF=1(6) -85-(-76)=1010 1011B-1011 0100B=10101011B+01001100B=B=0F7H;CF=0;OF=0下列各数为十六进制表示的8位二进制数,请说明当它们分别被看作是用补码表示的带符号数或无符号数时,它们所表示的十进制数是什么?(1) D8 (2) FF答:⑴D8H表示的带符号数为-40 , D8H表示的无符号数为216;(2) FFH 表示的带符号数为-1 ,FFH 表示的无符号数为255。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第三章汇编语言指令本章的内容包括:汇编语言程序设计方法机器指令常用的DOS系统功能调用3.1汇编语言程序设计方法一.汇编语言程序设计的一般步骤:1.分析问题,选择合适的解题方法。

2.根据具体问题,确定输入输出数据的格式。

3.分配存贮区并给变量命名,包括分配寄存器。

4.绘制程序的流程图,将解题方法和步骤用程序流程图的形式表示出来。

5.根据流程图编写程序。

6.静态检查与动态调试二.汇编语言程序设计的质量要求1.结构清晰、简明、易读、易调试。

2.执行速度快。

3.占用存储空间少。

三.流程图符号说明1.起始、终止框2.判断框3.处理说明框4.子程序或过程调用框5.流向线,表示程序流向6.连接框,流程图较复杂时,连接框表示几部分之间的关系注意:●起始框一条线出,终止框一条线入●处理框和子程序框一条线入,一条线出●判断框一条线入,两根线(多条线)出●判断框中为陈述句●判断框的分支上要标明Y和N格式:[标号:]操作符OPD, OPS [;注释]注意:●OPD、OPS类型一致●OPD不能为立即数●结果在OPD,OPS内容不变●OPD、OPS不能为内存操作数如:MOV BYTE PTR[2000H], [2100H]3.2.1.数据传送指令功能:将数据、地址、立即数送入寄存器或存贮器。

这类指令有:MOV、XCHG、XLAT、LEA、LDS、LES等。

四.一般数据传送1.传送指令格式:MOV OPD, OPS功能:(OPS) →OPD。

注意:寄存器←→寄存器;立即数→寄存器、存贮器;存贮单元←→寄存器。

不能是:单元←→单元。

格式:XCHG OPD,OPS功能:(OPD)→OPS,(OPS)→OPD。

如:XCHG AX,BX若执行前:(AX)=5678H,(BX)=1234H执行后:(AX)=1234H,(BX)=5678H注意:寄存器←→寄存器,寄存器←→存贮器。

有一个必须为寄存器。

3.查表转换指令(换码指令)格式:XLAT OPS;或XLAT功能:([BX+AL])→AL,将(BX)为首址,(AL)为位移量的字节单元数据→AL。

此时字节单元物理位置PA=(DS)左移4位+(BX)+(AL)。

该指令主要用于代码转换,如把字符转换成ASCII码。

五.地址传送指令1.传送偏移地址指令格式:LEA OPD, OPS等价于MOV OPD, OFFSET OPS。

功能:OPS的偏移地址→OPD。

如:LEA AX, BUF等价于MOV OPD, OFFSET BUF。

注意:OPD必须为16位寄存器。

2.传送偏移地址及数据首址指令格式:LDS OPD, OPS功能:(OPS) →OPD,(OPS+2) →DS。

将OPS所指的4个字节内容送OPD和DS。

如:LDS SI, [10H]执行前:(DS) = C000H,(C0010H) = 180H,(C0012H) = 2000H。

执行后:(SI) = 180H,(DS) = 2000H。

注意:●OPD必须为16位寄存器;●OPS必须为存贮器地址,类型为DD。

3.传送偏移地址及附加数据段指令格式:LES OPD, OPS功能:(OPS)→OPD,(OPS+2)→ES。

与LDS指令类似。

3.2.2.算术指令算术指令包括:加、减、乘、除及符号扩展指令指令的共同特点:对SF、OF、ZF、CF、AF等标志有影响,具体影响见教材附录。

指令分类:二进制指令、十六进制指令。

运算原则:有符号数在机内均用补码表示,最高位为符号位,计算机在运算时,不单独处理符号,而是将符号作为数值一起参加运算。

主要讲二进制指令。

1.加法指令ADD OPD, OPS; 功能:(OPS)+(OPD)→OPDINC OPD;功能:(OPD)+1→OPD注意:OPD不能是立即数。

2.减法指令SUB OPD, OPS; 功能:(OPD)-(OPS)→OPDDEC OPD; 功能:(OPD)- 1→OPDNEG OPD; 功能:(OPD)+ 1→OPD。

(求补)CMP OPD, OPS; 功能:(OPD)-(OPS)不回送结果,只影响标志。

例:求(AX)的绝对值。

注意:如果是进行加、减运算,对有符号数,当OF=0时,运算结果正确;对无符号数,当CF=0时,结果正确。

3.乘法指令4.(1) 单操作数乘法指令有符号乘法:IMUL OPS;无符号乘法:MUL OPS;被乘数隐含在AX(AL)中。

是字乘法还是字节乘法,由OPS 决定。

如:MOV AX, 50HMOV BX, -10HIMUL BX结果:(DX )= FFFFH ,(AX )= FB00H 。

注意:● 目的操作数必须是AX (字乘法是AX ,字节是AL )。

● OPS 不能是立即数。

● 除了对CF 和OF 有影响外,对其它标志的改变无意义。

若MUL 运算后,(AH )或(DX )为0,则CF 、OF 均为0;否则CF 、OF 均为1。

对IMUL 来说,若乘积的高一半是底一半的符号扩展,则CF 、OF=0;否则CF 、OF=1。

同乘法一样,除法也有字和字节之分。

如果是字除法,被除数也要求是双精度数。

从单精度数到双精度数,涉及到符号扩展的问题。

字节乘法:(AL )*(OPS )→ AX字乘法: (AX )*(OPS )→ DX 、AX功能: 双字乘法: (EAX )*(OPS )→ EDX 、EAX(2) 双操作数乘法指令格式:IMUL OPD, OPS功能:(OPS)*(OPD)→OPD注意:●目的操作数必须是16/32位寄存器●源操作数可以是立即数。

●目的操作数和源操作数必须类型一致(3) 3个操作数乘法指令注意:●目的操作数必须是16/32位寄存器●源操作数不能是立即数。

●目的操作数和源操作数必须类型一致格式:IMUL OPD, OPS, n功能:(OPS)* n→OPD5.符号扩展指令补码的符号位扩展:8位补码(-1)= FFH,16位补码(-1)= FFFFH。

(1)字节转换成字格式:CBW功能:将AL中的符号扩展到AH中。

如:MOV AL, -7CBWCBW执行前:(AL)= F9H,执行后:(AX)= FFF9H。

(2)字转为双字格式:CWD功能:将AX的符号扩展到DX中。

(3)字转为双字格式:CWDE功能:将AX的符号扩展到EAX中。

(4)32位转为64位格式:CDQ功能:将EAX的符号扩展到EDX中。

6.除法指令有符号除法:IDIV OPS;无符号除法:DIV OPS。

功能:字节除法:(AX)/(OPS)→AL(商)、AH(余数)字除法:(DX、AX)/(OPS)→AX(商)、DX(余)双子除法:(EDA、EAX)/(OPS)→EAX(商)、EDX(余)由OPS决定是字节、字除法。

如:MOV AX, -4001HCWDMOV CX, 4IDIV CX结果:(DX)= FFFFH(余数),(AX)= F000H(商)。

MOV AX, -4001HCWDMOV CX, -4IDIV CX结果:(DX)=FFFFH(余数),(AX)=1000H(商)。

注意:●如果是无符号除法,被除数符号的扩展不能用CBW、CWD。

只能:MOV AX,A;MOV DX,0。

●OPS不能为立即数。

●除数为0时,产生溢出,导致溢出中断。

●有符号除法,余数与被除数符号相同。

3.2.3.位操作指令一.逻辑运算指令包括:求反、逻辑乘、测试、逻辑加、按位加等。

1.求反格式:NOT OPD; 功能:将OPD的内容逐位取反→OPD。

该指令不影响标志位。

注意与求补的区别。

(求补NEG OPD)。

如:NOT AH; 执行前(AH)=20H,执行后:(AH)=DFH。

2.逻辑乘格式:AND OPD, OPS; 功能:OPD∧OPS→OPD该指令对SF、ZF、PF、OF、CF有影响。

运算规则:1∧1=1,1∧0=0,0∧1=0,0∧0=0。

如:AND DX, 0FFH执行前:(DX)=ABCDH,执行后:(DX)=CDH。

屏蔽高8位。

再如:AND AL, 0FH执行前:(AL)=‘5’=35H,执行后:(AL)=5,得到‘5’字符的实际值5。

AND也可作为运算符:A EQU 0B6HAND AL, A AND 0FDH在汇编过程中,将式子A AND 0FDH的值求出为:0B4H。

3.测试指令(1)格式:TEST OPD, OPS功能:(OPD)∧(OPS),结果不回送,影响标志SF、ZF、PF。

用途:检测与OPS中为1的位相对应的位是否为1。

如:(2)格式:BT OPD, OPS功能:将OPD的指定位送到CF注意:●OPD为16/32位●OPS为立即数或寄存器●若OPS绝对值大于OPD位数,则取模4.逻辑加格式:OR OPD, OPS功能:(OPD)∨(OPS)→OPD,影响标志位:CF、OF、PF、SF、ZF。

运算法则:1∨1=1,1∨0=1,0∨1=1,0∨0=0。

如:OR AH, 55H执行前:(AH)=0AAH,执行后:(AH)=0FFH5.按位加格式:XOR OPD, OPS功能:(OPD)∀(OPS)→OPD,影响标志CF、OF、PF、SF、ZF等。

运算法则:1 ∀ 1 = 0,1 ∀ 0 = 1,0 ∀ 1 = 1,0 ∀ 0 = 0。

如:XOR AX, AX执行后:(AX)=0,等价于MOV AX, 0再如:XOR AX, 123HJZ H…H: MOV BX, 5…若(AX )=123H ,则转移到H 二. 移位指令包括:算术、逻辑、循环移位。

格式:[标号:] 操作符 OPD, n[标号:] 操作符 OPD, CL 1. 算术、逻辑移位 (1)算术左移或逻辑左移SAL OPD, n 或 SHL OPD, n功能:(OPD )向左移指定的次数,低位补0。

如:SAL AL ,1 执行前:(AL )=5, 执行后:(AL )=0AH 注意:每左移一次,相当于原来的数*2,左移n 次,相当于*2n 。

(2)算术右移SAR OPD, n功能:(OPD )向右移指定位数,最高位不变。

右移n 位,实现有符号数除2n 运算。

如:SAR AH, 2执行前:(AH )= 0F4H ,执行后:(AH )= 0FDH 。

(3)逻辑右移SHR OPD, n功能:(OPD )向右移指定位数,最高位补相应个数的0。

右移n 位,实现无符号数除2n 运算。

如:将AL 中的压缩BCD 码转换为非压缩BCD 码。

注意:算术移位适合于有符号数;逻辑移位适合于无符号数。

2.循环移位指令(1)循环左移ROL OPD, n功能:(OPD)的最高位与最低位连成一个环,移位。

(2)循环右移ROR OPD, n功能:(OPD)的最低位与最高位连成一个环,移位。

(3)带进位循环左移RCL OPD, n一起向左循环移动规定次数。

相关文档
最新文档