微机原理第三章汇编语言程序设计.

合集下载

微机原理总目录

微机原理总目录


14.2 PC/XT硬件结构 14.3 总线技术

◆实验指南

15.1 《微机原理与接口技术》课程上机简介
15.2 汇编语言上机指导

4.4
4.5 4.6
程序的段结构
地址表达式 宏定义与宏调用


◆汇编语言程序设计
※ 5.1
汇编语言软件开发步骤及输入/输出问题 顺序程序设计 分支程序设计
※ 5.2
※ 5.3
※ 5.4
循环程序设计
专题应用程序设计
※ 5.5
◆8086微处理器结构

6.1 6.2 6.3
8086微处理器工作模式与引脚功能 系统组成 8086的总线操作与时序



◆ 并行接口芯片8255A

10.1
10.2 10.3 10.4
8255A概述
8255A的控制字 8255A的工作方式 8255A的编程



◆串行通信

11.1
11.2 11.3
串行通信概述
RS-232C串行接口标准 异步通信接口芯片8250


◆ DMA 控 制 器 8237A

12.1 12.2 12.3
1微机原理与接口技术王丰王兴宝编著目录第一章基础知识第二章微型机算机的组成机工作原理第三章指令系统第四章masm伪指令系统第五章汇编语言程序设计第六章8086微处理器结构第七章半导体存储器第八章输入输出技术第九章中断第十章并行接口芯片8255a第十一章串行通信第十二章dma控制器8237a第十三章其他常用接口第十四章pc机系统结构及总线技术第十五章实验指南基础知识11数制12码制13常用数字逻辑器件微型机算机的组成机工作原理21微型机算机的组成机工作原理22pc机的编程结构指令系统

汇编语言程序设计方法

汇编语言程序设计方法

C 名字前加 下划线
从右到左 调用程序

SYSCALL
从右到左 被调用程序

STDCALL 名字前加
下划线 (注)
被调用程序

PASCAL 名字变大写
BASIC 名字大写
FORTRAN 名字大写
从左到右 被调用程序

从左到右 被调用程序

从左到右 被调用程序

12
PROTO是过程声明伪指令,用于事先声明过程的结构。它的格 式如下:
结束处理部分
AGAIN: ADD AX,CX
;从20,19,……2,1倒序累加到AX
LOOP AGAIN ;每循环一遍,CX自动减1
MOV SUM,AX ;将累加和送入SUM单元
.EXIT 0
END
初始化部分
循环结束? 是 否
工作部分 修改部分 结束处理部分
7
二、用MASM 6.x循环控制伪指令实现循环结构
.CODE
.STARTUP
MOV AL, B
IMUL AL
MOV BX,AX MOV AL,A
;BX中为B的平方
IMUL C
MOV CX,4
IMUL CX
;AX中为4AC
.IF SWORD PTR BX>=AX ;比较B的平方和4AC的大小
MOV SIGN,1
;条件成立,SIGN得到1
.ELSE
MOV SIGN,0
.IF 条件表达式 ;条件为真(非0),执行分支体
分支体
[.ELSEIF 条件表达式
分支体
;前面IF条件为假,并且当前ELSEIF条件为真执行分支体
[.ELSE
;前面IF条件为假执行分支体

第3章-微机原理与接口技术-陈波-清华大学出版社

第3章-微机原理与接口技术-陈波-清华大学出版社
与数据有关的寻址方式 与地址有关的寻址方式
8
3.1.2指令的寻址方式
立即 数寻 址
寄存 器寻 址
与数 据相 关的寻 址方式
直接 寻址
寄存 器间 接寻址
80
存储器寻址 寄存器相对寻址
86

基址 加变 址寻址


相对 基址 加变址 寻址

段内 寻址
段内 直接 寻址
与地 址相 关的寻 址方式
段内 间接 寻址
10
3.1.2与数据有关的寻址方式
立即数寻址示意图:
代码段
低地址
MOV 28H
高地址
MOV 56H 34H
AX AH AL
AH AL
图3.2 立即数寻址
11
3.1.2与数据有关的寻址方式
说明: ①立即数可以是8位,也可以是16位。 ②立即数存放在存储器的代码段中,低字节在低地址,
高字节在高地址中。
21
3.1.2与数据有关的寻址方式
直接寻址指令可访问一个内存单元数据,也可以 访问两个内存单元数据。它的格式如下:
操作码 操作码
目的操作数寄存器,[立即数(有效地址)] [立即数(有效地址)],源操作数寄存器
22
3.1.2与数据有关的寻址方式
例3-4 MOV AX,[1234H]
其 中 , 1234H 立 即 数 为 内 存 中 数 据 段 的 有 效 地 址 。 假 设 (DS)=2000H,则操作数所在的段地址为2000H,有效地址 为1234H,其逻辑地址表示为2000H:1234H。 其 物 理 地 址 为 : 2000H*10H+1234H=21234H 。 而 其 执 行过程是将内存中物理地址为21234H单元的字节数据取到 累加器AL中,将21235H地址单元内容送到AH中,即取出一 个字数据,低地址单元数据送低8位寄存器AL中,高地址单 元数据送高8位寄存器AH中。

《微机原理与PLC技术》课程教学大纲

《微机原理与PLC技术》课程教学大纲

《微机原理与PLC技术》课程教学大纲一、课程的性质和任务课程性质:本课程是海轮专业(船电)学生的一门专业课,本课程由两大部分组成,一是微机原理(单片微型计算机原理),二是可编程控制器(PLC)。

课程任务:通过本课程的学习,是学生掌握两种工业控制的方法,初步能进行单片机和PLC的编程,具有使用这两种控制器的能力。

三、课程教学内容第一章数制与码制内容:进位计数制及各计数制间的转换,二进制数的运算,带符号数的表示方法,定点数与浮点数,BCD码与ASCII码重点:各计数制间的转换,二进制数的运算,带符号数的表示,BCD码难点:带符号数的表示教学要求:通过本章的学习能够了解二进制的基本运算规律,掌握带符号数的表示方法,对编码有初步了解第二章单片机基础内容:概述,MCS-51单片机的基本结构、中央处理器CPU,MCS-51单片机存储器及存储空间,并行输入/输出接口,CPU时序与复位重点:中央处理器CPU,存储空间的分配,并行口难点:存储空间的分配,并行口教学要求:了解MCS-51单片机的基本结构,对存储器及存储空间有初步了解,掌握各并行口的作用与特点,了解CPU的时序第三章指令系统及汇编语言程序设计内容:MCS-51单片机汇编语言与指令格式,寻址方式,MCS-51单片机指令系统,汇编语言及汇编语言程序设计,基本程序设计方法,程序设计举例重点:寻址方式,汇编语言及汇编语言程序设计,基本程序设计方法难点:汇编语言程序设计教学要求:掌握汇编语言程序设计的一般方法,具有初步程序设计的能力第四章单片机系统的扩展内容:系统扩展概述,常用的扩展器件简介,存储器的扩展,I/O口的扩展重点:74LS373、74LS138的使用方法,存储器的扩展难点:存储器的扩展教学要求:掌握几种常用器件的使用方法,掌握存储器的扩展方法第五章输入/输出、中断、定时与串行通信内容:I/O概述,输入/输出传送方式,MCS-51单片机的中断系统,定时/计数器,串行通信接口重点: MCS-51单片机的中断系统,定时/计数器难点:中断系统教学要求:掌握常用输入/输出的传送方式,掌握中断、定时/计数器、串行通信接口的使用方法第六章PLC的基本结构和原理内容:可编程序控制器的结构;现场输入与输出接口电路;传感器与可编程序控制器的接口电路。

微机原理与接口技术第3章(指令部分)

微机原理与接口技术第3章(指令部分)
第 3 章 指令系统及汇编语言程序设计
例:编程计算 0+1+2+3+4+ -----10 编程计算
MOV AL,0 , MOV BL,1 , MOV CL,10 NEXT:ADD AL,BL , INC BL DEC CL JNZ NEXT ;CL≠0 转 ≠ HLT
1
3.1 概述 一、指令包含的基本内容
12
(3)相对寻址
例: MOV AX, [SI+100H]
;结果 : 结果 AX (DS×16+SI+100H) ×
例:MOV AL,[BP+DATA] MOV AL, DATA[BP] ; DATA是符号表示的位移量。 表示的位移量 是符号表示的位移量。
结果 : AL (SS×16+BP+DATA) ×
11
(2)间接寻址 例:MOV AX,[BX] , •结果 : AX 结果 (DS×16+BX) ×
...
3000H:0000H : • EA= BX /SI /DI , 物理地址=DS*16+EA 物理地址 • EA= BP 物理地址=SS*16+EA 物理地址 :1234H :50H :1235H :30H
1. 做什么操作? 做什么操作? MOV ,ADD, OR,CMP等助记符 等助记符
2. 操作的数据是什么? ①CPU内的寄存器; 操作的数据是什么? 内的寄存器 内的寄存器; 内存的某一个或几个单元 单元; ②内存的某一个或几个单元; 结果放在那里? 3. 结果放在那里? 立即数。 ③立即数。 端口; 端口 ④I/O端口; 下一条指令在哪里? 4. 下一条指令在哪里? IP←IP+1

16、32位微机原理、汇编语言和接口技术教程课后习题答案解析

16、32位微机原理、汇编语言和接口技术教程课后习题答案解析

《16/32 位微机原理、汇编语言及接口技术教程》部分习题参考解答第1 章微型计算机系统概述〔习题1.2 〕什么是通用微处理器、单片机(微控制器)、芯片、嵌入式系统?〔解答〕通用微处理器:适合较广的应用领域的微处理器,例如装在机、笔记本电脑、工作站、服务器上的微处理器。

单片机:是指通常用于控制领域的微处理器芯片,其内部除外还集成了计算机的其他一些主要部件,只需配上少量的外部电路和设备,就可以构成具体的应用系统。

芯片:称数字信号处理器,也是一种微控制器,其更适合处理高速的数字信号,内部集成有高速乘法器,能够进行快速乘法和加法运算。

嵌入式系统:利用微控制器、数字信号处理器或通用微处理器,结合具体应用构成的控制系统,其典型的特点是把计算机直接嵌入到应用系统之中。

〔习题1.5 〕说明微型计算机系统的硬件组成及各部分作用。

〔解答〕:也称处理器,是微机的核心。

它采用大规模集成电路芯片,芯片内集成了控制器、运算器和若干高速存储单元(即寄存器)处理器及其支持电路构成了微机系统的控制中心,对系统的各个部件进行统一的协调和控制。

存储器:存储器是存放程序和数据的部件。

外部设备:外部设备是指可与微机进行交互的输入()设备和输出()设备,也称设备。

设备通过接口与主机连接。

总线:互连各个部件的共用通道,主要含数据总线、地址总线和控制总线信号。

习题1.6 〕什么是总线?微机总线通常有哪3 组信号?各组信号的作用是什么?〔解答〕总线:传递信息的共用通道,物理上是一组公用导线。

3 组信号线:数据总线、地址总线和控制总线。

(1)地址总线:传输将要访问的主存单元或端口的地址信息。

(2)数据总线:传输读写操作的数据信息。

(3)控制总线:协调系统中各部件的操作。

习题1.7 〕简答如下概念:(1)计算机字长(2)取指-译码-执行周期(3)(4)中断(5)总线解答〕(1)处理器每个单位时间可以处理的二进制数据位数称计算机字长。

(2)指令的处理过程,即指处理器从主存储器读取指令(简称取指),翻译指令代码的功能(简称译码),然后执行指令所规定的操作(简称执行)的过程。

微机原理第3章-指令系统

微机原理第3章-指令系统

▲按给出偏移地址方式的不同,分为以下5种: 寄存器间接寻址 寄存器相对寻址 基址加变址寄存器 相对基址加变址寄存器 MOV AL, [ BX ] MOV AL, [ BX + 10H ] MOV AL, [ BX + SI ] MOV AL, [ BX + SI + 10H ]
(1)寄存器间接寻址
寄存器寻址方式的操作数是寄存器的值,指令中直接 使用寄存器名,包括8位或16位通用寄存器和段寄存器。可 使用的16位寄存器:AX、BX、CX、DX、SI、DI、SP、 BP;其中:AX、BX、CX、DX可分成两8位使用。
例: MOV AX,CX
;(AX)
(CX)
INC CX
;(CX)
(CX)+1
3.直接寻址(Direct Addressing)
0002
AH
AL
默认段寄存器的关系: ① 使用BX、SI、DI,默认段寄存器为DS
(BX)
PA = ( DS )×10H + (SI) (DI)
② 使用BP,默认段寄存器为SS PA = ( SS )×10H + ( BP )
使用BX、SI、DI的寄存器寻址,默认段寄存器为DS
寄存器组 AH AL BH BL CH CL DH DL SI DI BP SP AX BX CX DX DS ES SS CS IP 地 址 加 法 器
运 算 器
控制总线CB


PSW标志 寄存器
执行部件控制电路
CPU
总线
内存
例: MOV AX , [ BX + SI ]
若 ( DS ) = 4000H
( BX ) = 2000H ( SI ) = 100H 则内存操作数的物理地址为:

第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; • 专用字符号:?、• 、@、―、$; • 名字项可以是标号或变量。

汇编语言程序设计

汇编语言程序设计

段寄存器赋值
在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文件,应用文件进行调试、查看文件执行情 况。

80x86微机原理参考答案

80x86微机原理参考答案

80x86微机原理参考答案第一章计算机基础(P32)1-1电子管,晶体管,中小规模集成电路、大规模、超大规模集成电路。

1-2把CPU和一组称为寄存器(Registers)的特殊存储器集成在一片大规模集成电路或超大规模集成电路封装之中,这个器件才被称为微处理器。

以微处理器为核心,配上由大规模集成电路制作的只读存储器(ROM)、读写存储器(RAM)、输入/输出、接口电路及系统总线等所组成的计算机,称为微型计算机。

微型计算机系统是微型计算机配置相应的系统软件,应用软件及外部设备等.1-3写出下列机器数的真值:(1)01101110 (2)10001101(3)01011001 (4)11001110答案:(1)+110 (2)-13(原码) -114(反码)-115(补码)(3)+89 (4)-78(原码)-49(反码)-50(补码)1-4写出下列二进制数的原码、反码和补码(设字长为8位):(1)+010111 (2)+101011(3)-101000 (4)-111111答案:(1)[x]原=00010111 [x]反= 00010111 [x]补= 00010111(2)[x]原=00101011 [x]反= 00101011 [x]补= 00101011(3)[x]原=10101000 [x]反= 11010111 [x]补= 11011000(4)[x]原=10111111 [x]反= 11000000 [x]补=110000011-5 当下列各二进制数分别代表原码,反码,和补码时,其等效的十进制数值为多少?(1)00001110 表示原码14,反码14,表示补码为14(2)11111111 表示原码-127,反码-0,表示补码为-1(3)10000000 表示原码-0,反码-127,表示补码为-128(4)10000001 表示原码-1,反码-126,表示补码为-1271-6 已知x1=+0010100,y1=+0100001,x2=-0010100,y2=-0100001,试计算下列各式。

微机原理作业及答案讲解

微机原理作业及答案讲解

微机原理作业第三章汇编语言程序设计题3.1A在下列程序运行后,给相应的寄存器及存储单元填入运行的结果:MOV AL,10HMOV CX,1000HMOV BX,2000HMOV [CX],AL BH XCHG CX,BXMOV DH,[BX] CLMOV DL,01HXCHG CX,BX CLMOV [BX],DLHLT DL AL=1OHBL=OOHBH=2OHCL=OOHCH=1OHDH=1OH(10O0H)=lOH(200OH)=0lH题 3.1B DL要求同题3.1A程序如下;MOV AL,50H ALMOV BP,1000HMOV BX,2000HMOV [BP],ALMOV DH,20HMOV [BX],DHMOV DL,01HMOV DL,[BX]MOV CX,3000HHLTAL=5OHBL=OOHBH=20HCL=OOHCH=30HDL=20HDH=2OHBP=100OH(10OOH)=5OH(20OOH)=20H题3.2,如在自1000H单元开始有一个100个数的数椐块。

要把它传送到自2000H开始的存储区中去,用以下三种方法,分别编制程序;1;不用数据块转送指令;2;用单个转送的数据块转送指令;3;用数据块成组转送指令;(1) LEA SI, 1OOOHLEA DI, 200OHMOV CX, 100L1: MOV AX, [SI]MOV[DI],AXLOOPLlHLT(2) LEASI,100OHLEADI,2000HMOVCX,100CLDL1: MOVSBLOOP L1HLT(3) LEASI, 100OHLEADI, 200OHMOVCX, 100CLDREP MOVSBHLT题3.3A 利用变址寄存器遍一个程序,把自1000H单元内开始的100个数转送到自1070H开始的存储区中去,LEASI,100OHLEADI,1070HMOVCX,100CLDREP MOVSBHLT题3.3B 要求用3.3A,源地址为2050H,目的地址为2000H,数据块长度为50,LEASI,205OHLEADI,200OHMOVCX,50CLDREPMOVSBHLT题3.4 编一个程序,把自1000H单元开始的100个数转送至1050H开始的存储区中(注意数据区有重叠)。

微机原理实验指导书(修改1023)

微机原理实验指导书(修改1023)

微机原理实验指导书华中科技大学计算机学院武汉豪申光电新技术有限公司目录微机原理实验 (3)第一章16位汇编语言编程验 (3)实验一系统认识实验 (3)实验二分支程序设计实验 (6)实验三循环程序设计实验 (9)实验四排序程序设计实验 (12)实验五子程序设计实验 (15)微机接口实验 (19)第一节并行接口实验(8255芯片实验) (19)实验一8255并行接口实验 (19)第二节定时/计数实验(8253芯片实验) (26)实验二音乐发声器接口实验 (26)第三节串行通信接口实验(8251芯片实验) (33)实验三 RS-232标准全双工查询方式异步串行通信实验 (34)第四节A/D D/A转换器接口实验 (42)实验四查询方式A/D转换器接口实验(ADC0809) (42)实验五 D/A函数波形发生器接口实验(DAC0832) (49)微机原理实验第一章16位汇编语言编程验实验一系统认识实验⑴实验目的掌握在MF平台中汇编程序的编写、调试方法。

⑵实验内容基本实验将存储区BUF1中的内容复制到BUF2中。

⑶实验步骤(一)方式1(Debug方式)1.在MF2KP环境下输入汇编程序,编译、连接,生成.exe文件。

2.启动调试程序(Debug)。

3.在程序的退出处设置断点,利用Add Watch命令查看BUF2中的内容是否正确。

(二)方式2(人-机交互方式)1.在MF2KP环境下输入汇编程序,编译、连接、运行。

2.按提示输入数据,在屏幕显示的结果中查看BUF1,2中的内容是否正确。

3.输入不同的字符串,可得到不同的结果。

⑷实验资源配置IBMPC微机,Win2000操作系统,MF2KP微机原理实验集成开发环境。

⑸实验软件的编程◇实验流程图如图1.1.1所示将存储区BUF1中的内容复制到BUF2中的程序主功能模块如图1.1.1中的虚线框中所示。

◇实验参考程序如下所示;*--------------------------------------------------* ;* Aexp1.asm(汇编语言编程认识实验) * ;* Copyright (c) 2002 by HUST * ;* 程序调试:在EXIT处设置断点,利用Add Watch命令 * ;* 查看BUF1和BUF2的内容是否正确 * ;*-------------------------------------------------* DATA SEGMENTBUF1 DB 'MASM HELLO WORLD'COUNT EQU $-BUF1BUF2 DB20DUP(?)DATA ENDSSTACK1 SEGMENT STACKDB20DUP(?)STACK1 ENDSCODE SEGMENTASSUME DS:DATA,SS:STACK1,CS:CODESTART:MOV AX,DATAMOV DS,AXMOV SI,OFFSET BUF1 ;建立源地址指针MOV DI,OFFSET BUF2 ;建立目标地址指针MOV CX,COUNT ;字节数送入CX寄存器L1: MOV AL,[SI] ; 取源数据一个字节送入AL中MOV [DI],AL;将源数据送入目标地址单元中INC SIINC DIDEC CXJNZ L1 ;判断是否传送完毕EXIT: MOV AH,4CHINT21HCODE ENDSEND START⑹实验要求◇按要求完成实验得出正确结果.◇试着自己写出人机对话方式的汇编程序.◇完成实验报告实验二分支程序设计实验⑴实验目的掌握分支程序的结构。

微机原理与接口技术牟琦贾建萍清华大学出版第三章答案

微机原理与接口技术牟琦贾建萍清华大学出版第三章答案

微机原理与接口技术牟琦贾建萍清华大学出版第三章答案CH03 汇编语言程序设计习题与思考题1.下列语句在存储器中分别为变量分配多少字节空间?并画出存储空间的分配图。

V AR1 DB 10,2V AR2 DW 5 DUP(?),0V AR3 DB ‘HOW ARE YOU?’,3 DUP(1,2)V AR4 DD -1,1,0解答:字节空间----V AR1:2;V AR2:12;V AR3:20;V AR4:12。

存储空间的分配图:DS:0000 0A 02 00 00 00 00 00 00—00 00 00 00 00 00 48 4F 0010 57 20 20 41 52 45 20 20—59 4F 55 3F 01 02 01 020020 01 02 FF FF FF FF 01 00—00 00 00 00 00 002.假定V AR1 和V AR2 为字变量,LAB 为标号,试指出下列指令的错误之处。

(1)ADD V AR1,V AR2 (2)SUB AL,V AR1 (3)JMP LAB[CX] (4)JNZ V AR1(5)MOV [1000H],100 (6)SHL AL, 4解答:(1)两个操作数中至少有一个为寄存器;(2)AL 为字节,V AR1 为字变量,不匹配;(3)[]中不能用CX,LAB 为标号,非变量;(4)转向地址应为标号,不能是变量;(5)目的操作数的类型不确定;(6)SHL 指令中,当所移位数超过1 时,必须用CL 或CX 来取代所移位数。

3.对于下面的符号定义,指出下列指令的错误。

A1 DB ?A2 DB 10K1 EQU 1024(1)MOV K1,AX (2)MOV A1,AX(3)CMP A1,A2 (4)K1 EQU 2048解答:(1)K1 为常量,不能用MOV 指令赋值;(2)A1 为字节,AX 为字变量,不匹配;(3)A1 未定义,无法做比较指令;(4)K1 重新赋值前,必须用PURGE 释放。

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

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

《微机原理》习题参考答案第一章绪论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本题问题不太明确例如:如果手边有手册或是知道产品的型号,就可从手册中查到微处理器的处理位数。

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

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

(完整word版)《微机原理及应用》习题答案

(完整word版)《微机原理及应用》习题答案

(完整word版)《微机原理及应用》习题答案《微机原理及应用》习题答案教材:《80X86/Pentium微型计算机原理及应用》答案第一章计算机基础1-3(1)01101110 真值=110(2)10001101 真值=-131-4(1)+010111[+010111]原=[+010111]反=[+010111]补=00010111 (2) +101011[+101011]原=[+101011]反=[+101011]补=00101011 (3) –101000[-101000]原=10101000 [-101000]反=11010111 [-101000]补=11011000(4) -111111[-111111]原=10111111 [-111111]反=11000000 [-111111]补=110000011-6(1) [x1+y1]补=[x1]补+ [y1]补=00010100+00100001=00110101(2)[x2-y2]补=[x2]补+ [-y2]补=11101100+00100001=000011011-7 (1)85+60解:[-85]补=10101011 [60]补=00111100[-85]补+[60]补=10101011+00111100=11100111 (11100111)补=10011001 真值=-25CS=0,CP=0, CS⊕CP=0 无溢出(4)-85-60[-85]补=10101011 [-60]补=11000100[-85]补+[-60]补=10101011+11000100=101101111 CS=1, CP=0 CS⊕CP=1 有溢出1-8(1) [x]补+ [y]补=01001010+01100001=10101011 CS=0, CP=1 CS⊕CP=1 有溢出(2) [x]补- [y]补=[x]补+ [-y]补=01001010- 01100001=01001010+10101010=100010110CS=1, CP=1 CS⊕CP=0 无溢出1-9(1) (127)10=(000100100111)BCD(2) (74)H=(116)10=(000100010110)BCD1-10(1) 41H 代表A(2) 72H 代表r(3) 65H 代表e(4) 20H 代表SP1-14(1) 69.57(69.57)10=(1000101.100)B=0.1000101100 X 27=0.1000101100 X 2+111浮点规格数为011101000101(2)-38.405(-38.405)10=(-100110.011)B-100110.011= -0.100110011 x 26 = - 0.100110011 x 2110浮点规格数为011011001100(3) - 0.3125(-0.3125)10=(-0.0101)2=(-0.101)2 x 2-001浮点规格数为1111110100001.+0.008342.(+0.00834)10=(0.000000100010001)2=(0.100010001)2 x 2-1103.浮点规格数为1010010001004.1-155.(1) (69.57)10=(1000101.10010001111010111)26. =(1.00010110010001111010111)2 x 21107. p=6+127=133=(10000101)28.单精度浮点数为010000101000101100100011110101119.(2)(-38.405)10=(-100110.011001111010111000)210. = - (1.00110011001111010111000)2 x 210111. p=5+127=132=(10000100)212.单精度浮点数为1100001000011001100111101011100013.(3) (-0.3125)10=(-0.0101)2=(-1.01)2 x 2-1014. p=-2+127=125=(1111101)215.单精度浮点数为10111110101000000000000000000000第二章 80X86/Pentium 微处理器2-3IO/M DT/R DEN RD WR读存储器 0 0 0 0 1写存储器 0 1 0 1 02-17PA=CS x 16+IP IP的范围为0000H~FFFFH 而CS为A000H因此PA的范围即现行代码段可寻址的存储空间范围为A0000H~AFFFFH2-201234ABCDH=00010010001101001010101111001101 BPA=SS x 16+SP=A0000H+0100H=A0100H栈顶SP=0100H-4=00FCH11001101 A00FCH101010110011010000010010 A0100F2-21(1) 1278H+3469H=0001 0010 0111 1000+0011 0100 0110 1001=0100 0110 1110 0001SF=0 ZF=0 AF=1 PF=1 CF=0 OF=0(2) 54E3H-27A0H=0101 0100 1110 0011+1101 1000 0110 0000=1 0010 1101 0100 0011SF=0 ZF=0 AF=1 PF=0 CF=0 OF=0当进行16位或8位加或减运算时,若最高位产生进位或借位时,将CF置1,否则为0,当进行带符号数补码运算时,运算结果超出了机器所能表示的数值范围,就产生溢出,将OF置1,否则OF置0,即OF用来表示有符号数运算的溢出,而CF则用来表示无符号数运算的溢出。

微机原理 第三章1

微机原理 第三章1

(2)立即(数)寻址
② MOV AX,1234H
说明:这条指令的功能就是将立即数 1234H传送到寄存器AX中。 执行完该条指令后, AX=1234H
(3)寄存器寻址(Segment Addressing)
当操作数在寄存器中时为寄存器寻址(或称寄 存器直接寻址)。如: ① MOV AL,12H 说明:目的操作数AL即为寄存器寻址。
DS(BX的默认段)值
0000
Memory
ES值
SS(BP的默认段)值
CS值
BP: +)位移量:
0000 0000 0000
…… ××
0100 0000 0000 0000 0000 0000 0000 0010
20 位 物 理 地 址
MOV [SI]10 ,AH ( 设SI原值为008CH)
Bit 19 4 3 0
1、通用数据传送指令
(1)MOV指令 (2)PUSH和POP指令 (3)交换指令XCHG (4)换码指令XLAT
(1)MOV指令
是基本传送类指令,实现字或字节数据的 复制。
指令格式:MOV dst,src
指令功能:将源操作数src,传送到目的操作 数dst中。 如:MOV AL,12H
功能:执行指令就是将立即数12H传送到 AL中,执行完指令后AL=12H。
(6)寄存器相对寻址方式 使用基址寄存器(BX或BP)、并带位移 量的间接寻址。操作数EA=BX或BP值+位 移量。 例:MOV DL,[BP+2] 其它等效写法: MOV DL,[BP] 2 MOV DL,2 [BP]
MOV DL,[BP+2] ( 设BP原值为4000H)
Bit 19 4 3 0
汇编语言 用指令助记符表示机器码,例如对应于机器码 B8H、C3H的助记符为MOV AX,BX 。 CPU不同,机器码不同,助记符也不同。

16 32位微机原理汇编语言及接口技术(第二版)第三章课后习题

16 32位微机原理汇编语言及接口技术(第二版)第三章课后习题

16 32位微机原理、汇编语言及接口技术(第二版)第三章课后习题>第3章3.1:汇编语言有什么特点解:汇编语言是一种以处理器指令系统为基础的低级程序设计语言,它采用助记符表达指令操作码,采用标识符号表示指令操作数,可以直接、有效地控制计算机硬件,因而容易创建代码序列短小、运行快速的可执行程序3.2编写汇编语言源程序时,一般的组成原则是什么?解:(1)完整的汇编语言源程序由段组成(2)一个汇编语言源程序可以包含若干个代码段、数据段、附加段或堆栈段,段与段之间的顺序可随意排列(3)需独立运行的程序必须包含一个代码段,并指示程序执行的起始点,一个程序只有一个起始点(4)所有的可执行性语句必须位于某一个代码段内,说明性语句可根据需要位于任一段内(5)通常,程序还需要一个堆栈段 3.3 MODEL伪指令是简化段定义源程序格式中必不可少的语句,它设计了哪7种存储模式?各用于创建什么性质的程序?解:存储模式 TINY SMALL COMPACT MEDIUM LARGE HUGE FLAT 特点 COM类型程序,只有一个小于64KB的逻辑段(MASM 6.x支持)小应用程序,只有一个代码段和一个数据段(含堆栈段),每段不大于64KB 代码少、数据多的程序,只有一个代码段,但有多个数据段代码多、数据少的程序,可有多个代码段,只有一个数据段大应用程序,可有多个代码段和多个数据段(静态数据小于64KB)更大应用程序,可有多个代码段和多个数据段(对静态数据没有限制) 32位应用程序,运行在32位80x86CPU和Windows 9x或NT环境 3.4如何规定一个程序执行的开始位置,主程序执行结束应该如何返回DOS,源程序在何处停止汇编过程?解:开始位置:用标号指明返回DOS:利用DOS功能调用的4CH子功能来实现汇编停止:执行到一条END伪指令时,停止汇编3.5逻辑段具有哪些属性?解:段定位、段组合和段类型。

3.6给出采用一个源程序格式书写的例题3.1源程序例题3.1:创建一个在屏幕上显示一段信息的程序?? 解: stack segment stack db 1024(0) stack endsdata segmentstring db 'Hello,Assembly!',0dH,0aH,‘$’ data endscode segment 'code'assume cs:code,ds:data,ss:stack start: mov dx,offset string mov ah,9 int 21h code endsend start3.7DOS支持哪两种可执行程序结构,编写这两种程序时需要注意什么?解:(1). EXE程序程序可以有多个代码段和多个数据段,程序长度可以超过64KB 通常生成EXE结构的可执行程序 (2). COM程序只有一个逻辑段,程序长度不超过64KB需要满足一定条件才能生成COM结构的可执行程序(MASM 6.x需要采用TINY模式)3.8举例说明等价“EUQ”伪指令和等号“=”伪指令的用途解:符号定义伪指令有“等价EQU”和“等号=”:符号名 EQU 数值表达式符号名EQU 符号名=数值表达式EQU用于数值等价时不能重复定义符号名,但“=”允许有重复赋值。

数电最全答案

数电最全答案

结构等方面,向高性能、多功能的方向发展,如天气预报、灾难预
报、科学计算。 世界最快超级计算机为天津国家超级计算机中心的天河-1A,速度 为每秒2.5千万亿次. 三网络化:知识大爆炸、信息高速公路
二、计算机的特点、应用 自动性:自动执行存储在存储器中的程序,以完成一定的信 息处理任务 高速性:Pentium指令周期只有几个~几十个毫微秒 准确性:
有关术语:
1. 位 ( bit)
指计算机能表示的最基本最小的单位
在计算机中采用二进制表示数据和指令,故: 位就是一个二进制位,有两种状态,“0” 和 “1” 2. 字节 ( Byte ) 相邻的8位二进制数称为一个字节 如: 1100 0011 0101 0111 1 Byte = 8 bit
1AF . 4H =1×162 +10×16 1+15×16 0+4×16 -1
= (431.25)10
2、各种数制之间的转换
(1) 二进制、十六进制转十进制:按权展开即可。 例如: (10110.101)2 =1×24 +0×2 3+1×2 2+1×2 1+0×2 0+1×2 1+
0×2 -2+1×2 –3 = (22.625)10
反码:正数的反码与原码相同;负数的反码等于该数的原码 除符号位外按位取反。
X X n (2 1) X
2 n 1 X ≥ 0 0≥ X -2n 1
例如:12的8位反码为 0000 1100B -12的8位原码: 1000 1100B -12的8位反码为 1111 0011B
例如:二进制数110101110.01B转换为十六进制数 0001 1010 1110 . 0100 ↓ 1 ↓ A ↓ ↓ E . 4
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
PAGE: ×××× PARA: ×××× WORD:×××× BYTE:×××× ×××× ×××× ×××× ×××× ×××× ×××× ×××× ×××× 0 0 0 0 ×××× ×××× ×××× 0 0 0 0 B 0 0 0 0 B ××× 0 B ×××× B
分别表示以页、段、字、字节为起始地址。若缺省 则隐含为PARA。
二、汇编语言源程序的段定义
汇编语言源程序的段定义与内存的分段组织直接相关。 典型的程序包含代码段、数据段和堆栈段。SEGMENT 和ENDS伪指令用于定义各种段。它们的语句格式如下: 段名字 SEGMENT [可选项] (段模块) 段名字 ENDS 段名字必须在两处出现,而且必须一致。SEGMENT 和ENDS必须成对出现。 SEGMENT定义一个段的开始,ENDS定义一个段的 结束。
第三章 汇编语言程序设计
第一节 机器语言、汇编语言与高级语言
一、机器语言与汇编语言 计算机完成任何一个特定的功能都是通过执行特定的 程序来实现的,程序是一系列指令组成的,计算机通过 对每条指令的译码和执行来完成一系列操作。计算机最 终能理解并执行的是以二进制代码表示的机器语言。 例3-1 在内存中有一个数据块,其首地址为Buffer (3000H:0200H),其中存放16位的符号数20个。现要找 出其中的最大值,并将其存入MAX字单元(其偏移地址 为0228H)。 借助8086汇编指令我们可以编写出如下程序:
三、汇编与连接 用汇编语言设计程序首先应根据任务编写汇编语言 源程序,文件类型一般标为ASM文件。汇编语言源程序 编写有许多规则和方法,本章将予以介绍。 可以用各种文本编辑软件建立源文件,如全屏幕编 辑软件EDIT,还有WORD等,ASM文件采用ASCII码。 通常文件名的后缀是.ASM。 汇编语言源程序必须经过翻译才能变为二进制机器 代码。在计算机中完成这种翻译工作的软件叫汇编程序 或汇编器(Assembler)。MASM.EXE就是汇编程序。如果 源程序名为:SAMPLE.ASM则用命令: C:>MASM SAMPLE.ASM 就可产生目标程序,文件类型一般标为OBJ。为了便 于程序调试,同时还产生列表文件,一般标为LST。
汇编语言中的标号或名字或其他变量名必须是由字母 或特殊字符打头的字母数字串,中间不能有空格。合法 的字符包括: 字母:A~Z 或 a~z 数字:0~9 特殊字符:问号(?)、圆点(.)、@、下横线( _ )和美 元符号($),圆点只能作为第一个字符。 标号和名字的长度不超过31个字符,超过部分均被删 去。
1.指令语句的格式 汇编语言的CPU指令语句格式如下: [label:] memonic [operand] [,operand] [;comments] 标号域 助记符域 操作数域 注释域 四个域中只有助记符域是必不可缺的,其他的域都 是可选的。 助记符域是指令的操作码助记符,如MOV、ADD、 SUB等等。助记符域与操作数域之间至少应留有一个空 格。两个操作数之间要有逗号分开。 标号一般为转移指令提供目标地址的符号名,例如 上例中的CHKMAX。程序员不必去计算相对转移的地 址偏移量,汇编器会自动完成这一工作。标号后面跟一 个冒号。伪指令前的名字不能后跟冒号。 注释域以分号打头。
第二节 汇编语言源程序的结构
如果把例3-1改写为标准的汇编语言源程序,就可 以用MASM命令进行汇编,则源程序如下: ; exm3_1.asm find the largest number and ; store in the max unit data segment org 0200h buffer dw 0, 1, -5, 10, 256, -128, -100, 45, 6 dw 3, -15, -67, 39, 4, 20, -1668,-32766 dw 32765, -525, 300 count equ ($-buffer)/2 max dw ? data ends
汇编以后机器码在内存中的形式如表3-1所示。表 中第三列是汇编语言指令,它是用便于记忆的符号和格 式来表示每一条实际的机器指令代码。 用机器语言来编写程序很不直观,也是不现实的, 特别是对于复杂问题。PC机有专门的汇编程序,可以用 汇编语言直接编程。
二、汇编语言与高级语言 汇编语言程序设计的基本单位仍然是机器指令,只 是采用助记符表示,便于人们记忆。因此汇编语言对机 器的依赖性很大,称为面向机器的语言。 每种机器都有它专用的汇编语言,在一种机器上用 的汇编语言程序很难搬到另一种机器上使用,即不具备 通用性和可移植性。汇编语言程序设计员必须对机器的 硬件及软件资源有足够的了解才能设计程序。尽管如此, 各种汇编语言在基本原理、基本概念和基本编程方法等 方面是相同或相近的。 高级语言,如BASIC、FORTRAN、C语言等是进一 步发展了的计算机语言。它们是面向过程的语言,不依 赖于机器,因而有很好的通用性和可移植性,而且用高 级语言设计具有很高的程序设计效率。
SEGMENT语句可以有三种可选项:定位类型、连接 方式和类别。可选项之间用空格符或制表符TAB分开。 格式如下: 段名 SEGMENT [定位类型] [连接方式] [„类别’] 1.定位类型 定位类型指明该段进入内存时从何种类型的边界开 始。有四种定位类型:PAGE、PARA、WORD、BYTE。 起始地址分别是:
3.类别 类别必须用单引号括起来。类别指定同样只在模块 连接时才需要。一般对于堆栈段总定义类别为 ‘STACK‟;对代码段通常指定类型为‘CODE‟;对数 据段则指定为‘DATA‟。如果一个程序不准备和其他程 序组合,也可以不指定类别。 类别名可由用户任意设定。链接程序把类别名相同 的段(段名未必相同)放在连续的存储区间内。但仍为 不同的段(连接方式为PUBLIC、COMMON的段除外)。 在前面例子中的堆栈段定义如下: STACK SEGMENT PARA STACK „STACK‟ 堆栈段名 定位 连接方式 类别
PSP的头两个字节是一条 INT 20H指令,即返回DOS指令。 当一个用户程序运行结束时,可 以通过把控制返回给PSP中的这 条指令而终止自已的进程。这是 由用户程序返回操作系统的传统 方法。 当DOS加载一个可执行文件 的程序代码到内存中去时,它首 先为该程序建立一个程序段前缀 PSP,然后把可执行的程序代码 加载到PSP后续的地址上。(即CS指向地点),而DS和ES 初始化在PSP的起始地址。DOS装入EXE文件后的内行 分配如图所示。
stack segment stack ‟stack‟ db 100 dup (‟s‟) stack ends code segment para ‟code‟ assume cs: code, ds: data, ss: stack sta proc far chkmax: add si, 2 push ds cmp [si], ax xor ax, ax jle next push ax mov ax, [si] mov ax, data next: loop chkmax mov ds, ax mov max, ax lea si, buffer ret mov cx, count sta endp dec cx code ends mov ax, [si] end sta
; exm3_1 find the largest number and store in the max unit MOV AX,3000H MOV DS,AX MOV SI,0200H MOV CX,14H DEC CX MOV AX,[SI] CHKMAX: ADD SI,2 CMP [SI],AX JLE NEXT MOV AX,[SI] NEXT: LOOP CHKMAX MOV [0288H],AX INT 20H
高级语言优点很多,还要学习汇编语言的理由如下: (1) 汇编语言仍然是各种系统软件(如操作系统)设计的 基本语言。虽然有人用C语言来编写系统软件,但是要 将它翻译成机器语言,还必须用到汇编语言。 (2) 用汇编语言编写的程序一般比用高级语言编写的 程序执行得快,且所占内存较少。 (3) 在许多实时控制系统中,高级语言并不完全适合, 汇编语言就是不可缺少的了。特别是在直接有效地利用 机器硬件功能方面,比如中断等就都少不了汇编语言。 (4) 用高级语言开发中,有时需要编写一些非标准过 程,而高级语言可能并不支持。这时就需用汇编语言来 补充高级语言在某些特定领域中的功能不足。 (5) 学习汇编语言对于学习计算机硬件组成及工作原 理是十分重要的。
2.汇编伪指令的格式 伪指令是针对汇编程序的命令。它可以用来定义段 和过程、定义语句、分配内存空间以及完成各种与程序 设计有关的重要说明。汇编伪指令也有四个域: [名字] 伪指令 [操作数] [注释] 一般来说,只有伪指令域是必须的。对于某些伪指 令,名字域也是必须的,但是要注意的是名字域后面不 能用冒号(:)相随。域与域之间用空格隔开。 伪指令的操作数域是可选的,它可以有多个操作数, 只受行长度的限制。 有的伪指令操作数域部分的各操作数之间要求用逗 号(,)分开,而有些伪指令则要求用空格分开,必须严 格遵循有关规定。
在堆栈段里一般只要简单地定?) 语句为堆栈分配了100个字节的空 间。堆栈空间的大小取决于程序如何使用堆栈。最大不 能超过64KB。定义堆栈空间时还可以给字节以初始化, 例如: DB 100 DUP ( „STACK‟) 不仅分配了500个字节的堆栈空间。而且还把这个空 间初始化为重复100次的’STACK‟字符串。其目的是为 了在查看内存分配以调试程序时可以方便地找到堆栈空 间。 一般应直接定义为字空间: DW 20 DUP ( ? )
下面分析汇编语言源程序的结构。 一、汇编语言的语句格式 汇编语言包含两类语句:CPU指令语句和汇编语言 伪指令语句。 指令语句指定CPU做什么操作,如第二章所述; 伪指令语句指定汇编器作何种操作,这是这一章要 学习的。 指令语句都有对应的机器码,而伪指令语句一般不 产生机器码(只有少数一些数据定义伪指令会产生机器 代码)。
相关文档
最新文档