第三章 80868088汇编语言程序设计

合集下载

chapter 4-3 80868088汇编语言程序设计

chapter 4-3 80868088汇编语言程序设计

DI, D1 DX, [DI] CX, [DI+2] BX, [DI+4] SI, [DI+6] DI, D2 DX, [DI] CX, [DI+2] BX, [DI+4] SI, [DI+6] AL, 0 AL, 0 AH, 4CH 21H BG
;将D1表示的偏移地址送DI ;取第1操作数到寄存器中


注意:上机汇编、连接时,文件扩展名可省去。
8
4.3.2 分支结构程序
要求计算机作出判断,根据判断结果做出不同处理。即 根据某条指令运行的结果是否满足一定的条件来改变程
序执行的顺序,从而去执行不同的分支程序。
条件

分支 1

分支 2
9
【注意】:
带符号数的条件转移指令: JG/JNLE、JL/JNGE、JGE/JNL、JLE/JNG
;将D2表示的偏移地址送DI
;最高位进位放入AL ;程序结束,返回DOS操作系统
汇编语言上机前的软件准备:

MS-DOS操作系统(如:MSDOS6.2、MSDOS7.0 等) 文本编辑器(如:记事本、WORD、 等) 汇编程序(如:MASM.EXE、ASM.EXE等) 连接程序(如:LINK.EXE等) 调试程序(如:DEBUG.EXE等)
第四章
8086/8088汇编语言程序设计
主讲教师:胡晓娟
4.3 8086/8088汇编语言程序设计基本方 法
进行汇编语言程序设计可以参考下述步骤: ① 分析问题,建立基于问题的数学模型
② 设计算法
③ 绘制流程图或结构图 ④ 编写程序 ⑤ 上机调试 在DOS环境下的8086/8088汇编语言程序结束时,通常用DOS的 4CH号中断调用,以便使程序控制返回 DOS操作系统。 MOV AH, 4CH INT 21H

第三章8088汇编语言程序设计微机原理第2版课后答案

第三章8088汇编语言程序设计微机原理第2版课后答案

第三章8088汇编语⾔程序设计微机原理第2版课后答案第三章 8088汇编语⾔程序设计本章的主要内容是汇编语⾔语句⾏的构成,源程序的结构,汇编语⾔程序设计⽅法。

3.1 重点与难点本章的学习重点是结构化程序设计思想,顺序、分⽀、循环结构的程序设计,⼦程序结构的设计与调⽤,中断指令的应⽤。

另外,汇编语⾔伪指令的使⽤、源程序的结构等也是必须掌握的。

3.1.1 汇编语⾔语句⾏的构成1.标记(1)标识符:由数字、字母和下划线组成,且不能以数字开头,最⼤长度不超过31个字符。

(2)保留字:汇编语⾔中保留下来的具有特殊⽤途的字串,如指令、伪指令、寄存器名等都是保留字。

保留字不可⽤作标识符。

(3)界符:程序或指令中两个部分的分隔符号。

汇编语⾔源程序中可⽤的界符:′〈〉;,:? $ () + - = &[] * / ·(4)常量:数字常量,可以使⽤不同的进制D、B、H、Q;字符串常量,由引号引起来的字符串,相当给出字符所对应的ASCII码串。

2.符号及其属性(1)寄存器:8086/8088 CPU的寄存器可以作为指令的操作数。

(2)变量:即内存单元的符号地址。

变量不能与保留字、段名重名。

它有三个属性:段属性,指变量所在段的段地址;偏移量,指变量所在段的起始地址到变量地址之间的字节数,即偏移(有效、逻辑)地址。

类型,指指变量具有的字节数,包括BYTE、WORD、DWORD、QWORD和TBYTE等。

(3)标号:即代码段中某条指令的符号地址,由编程者根据需要确定的。

标号不能与保留字重名,可使⽤字母、数字及下划线,但不允许⽤数字开头,字符个数不超过31个。

标号作为符号地址也有三个属性:段、偏移量和类型(NEAR、FAR)。

3.表达式表达式是作为语句的⼀个操作数,在汇编时⼀个表达式得到⼀个值。

(1)操作数数据——常数、符号常量;存储单元地址——常⽤符号地址表⽰。

(2)运算符算术运算符:+、-、*、/、MOD。

对地址的运算仅有+(加)、-(减)运算符。

汇编语言-计算机14级第三章 80868088寻址方式及指令系统3.3 第三章课件

汇编语言-计算机14级第三章 80868088寻址方式及指令系统3.3 第三章课件
(SI)=2000H, (12100H)=1234H, 则PA=1000H×16+2000H+100H=12100H 则执行结果为:(AX)=1234H
* 用符号地址表示操作数时,方括号可加 可不加
【例3.5】
MOV AX, A1 ≡ MOV AX,[A1] MOV AX, VALUE ≡ MOV AX, [VALUE]
注意:双操作数指令中的两个操作数,不能同时 使用存储器寻址方式
信息工程学院
第3章 8086/8088寻址方式及指令系统
(4) 寄存器间接寻址
* 用于间接寻址的寄存器必须加方括号
* EA只能由BX、BP(操作数默认在堆栈段)、SI、DI指出
MOV AX,[CX]

* SRC 和 DST 的长度一致
MOV DL,[BX] ;[BX]指示一个字节单元
MOV DX,[BX] ;[BX]指示一个字单元
* 允许使用段跨越前缀 如:MOV AX,ES:[BX]
* 适于数组、字符串、表格的处理
信息工程学院
第3章 8086/8088寻址方式及指令系统
指令: MOV AX,[SI]
AX
DS
已知:(AX)=5 (SI)=20H
AH AL SI
(DS)=1000H
则PA=1000H×16+20H=10020H
指令执行后:
(AX)=0FFFFH,其他不变
数据段 10000H
* 寄存器只能使用BX、BP(操作数默认在堆栈段)、 SI、DI
* 可以使用段跨越前缀 例如:MOV AX,ES:STR[SI]
* 适于数组、字符串、表格的处理
信息工程学院
第3章 8086/8088寻址方式及指令系统

第三节 80868088汇编语言

第三节 80868088汇编语言

三、汇编语言语句格式汇编语言程序由若干语句组成。

汇编语言语句类型:指令语句—完成操作功能,能编排(比翻译简单)成机器语言代码(即80x86指令系统的指令);伪指令语句—为汇编程序在编排源程序时提供有关信息;宏指令语句—分为宏定义和宏调用语句,编排时用宏定义代替宏调用语句。

汇编语言语句通用格式:[名字项] 操作项[操作数项] [;注释项]1、名字项组成:可由字母、数字、特殊字符(?、.、@、_、$)组成,数字不能作首字符,.只能作首字符。

类型:标号、变量。

(1)标号组成:①语句标号--由名字+冒号(“:”)组成;②过程名、段名等—只由名字组成。

属性:段属性—标号(定义时)所在段的起始地址;偏移属性—标号与所在段起始地址间字节数;类型属性—表明引用它时的特性,段内引用为NEAR,段间引用为FAR。

(2)变量组成:在除代码段外的段中定义,只由名字组成。

属性:段属性—变量(定义时)所在段的起始地址;偏移属性—变量与所在段起始地址间字节数;类型属性—表明为它所保留的主存字节数,DB/DW/DD/DQ/DT对应1/2/4/8/10字节。

思考:标号与变量的主要区别?指令中变量的数据类型如何表示?2、操作项组成:可为指令、伪指令或宏指令的助记符。

说明:指令助记符可带指令前缀。

示例:D_SEG SEGMENTNUM1 DB 10 DUP(10) ;数据定义NUM2 DW 20 DUP(0, 4 DUP(2))NUM3 DB 10H, 5 DUP(?)NUM4 DB ‘STRING’D_SEG ENDS ;假设DS指向D_SEG段MOV AX, SEG NUM1 ;等价于AX←(DS)MOV BX, SEG NUM2 ;AX与BX值相同MOV SI, OFFSET NUM1 ;NUM1相对于段的偏移量→SI MOV DI, OFFSET NUM2 ;等价于LEA DI, NUM2MOV AH,TYPE NUM2 ;2→AHMOV BH,LENGTH NUM2 ;20→BH(指最外层参数)MOV AL,LENGTH NUM3 ;1→AL(指第一个参数)MOV CL, SIZE NUM2 ;20*2→CLMOV CH, SIZE NUM4 ;1*1→CH(4)属性运算符PTR格式:<类型> PTR表达式PTR功能:用新类型取代表达式默认的数据类型PTR说明:①表达式为MEM操作数或变量时,类型可为BYTE、WORD、DWORD,表达式为标号时,类型可为NEAR、FAR;②仅改变数据类型属性,且仅在本语句有效。

第3章 80868088的指令系统

第3章 80868088的指令系统

fill
F range list:填写存储单元
go
G [=address] [addresses]:运行
hex
H value1 value2
input
I port
load
L [address] [drive] [firstsector] [number]:装入命名过的文件
move
M range address
微型计算机原理与接口技术
汇编语言程序设计概述
编程语言分类 机器语言:计算机能直接识别并执行某种操作的二进制代码串 汇编语言:用指令助记符、符号地址和标号等书写程序的语言 高级语言:C语言等
汇编语言程序优点 (1)占用空间小 (2)运行速度快 (3)有直接控制硬件的能力
开发环境: DOS环境
微型计算机原理与接口技术
name
N [pathname] [arglist]:命名
output
O port byte
proceed
P [=address] [nuregister
R[F] [register]:显示和修改寄存器[标志寄存器]
search
S range list
trace
T [=address] [value]:跟踪(单步执行)
微型计算机原理与接口技术
语句格式: [名字] 助记符 [操作数1[, 操作数2]][;注释]
START
START CODE
PROC FAR PUSH DS XOR AX,AX PUSH AX MOV AX,DATA MOV DS,AX MOV DX, SEG MOV DS, DX MOV DX, OFFSET MOV AH, 9H INT 21H RET ENDP ENDS END START

8086—8088汇编语言

8086—8088汇编语言

暂存寄存器 ALU EU控 制器 标志寄存器 执行部件(EU) 8086/8088内部结构图 总线接口部件(BIU) Q总线 指令队列
第二章 80 从存储器中取出一条指令,执行完所取出的指令 后再去取下一条要执行的指令。一般CPU和总线工作 过程如下:
第一章 概
述(1.4.10)
11100111 + 11100000 111000111 “1” 舍去
[X+Y]补=[X]补+[Y]补 =11100111B+11100000B =11000111B X+Y=-0111001B=-57D
[X-Y]补=[X]补+[-Y]补 =11100111B+00100000B =00000111B X-Y=00000111B=7D
CPU t
(二个字节)
0000 0101
0000 0110
第一章 概
BCD码
0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 00010000 00010010 00010011 00010100 00010100 00010101 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
第一章 概
述(1.4.9)
[X-Y]补=[X]补+[-Y]补 00011001 =00011001B+11100000B + 11100000 =11111001B 11111001 X-Y=-0000111B=-7D 例2 已知:X=-25D,Y=-32D,用8bit二进制补 码运算求 X+Y和X-Y的值 解:X=-25D=-0011001B Y=-32D=-0100000B [X]补=11100111B,[Y]补=11100000B [-Y]补=00100000B

80x86汇编语言程序设计 第3章 80x86指令系统和寻址方式PPT课件

80x86汇编语言程序设计 第3章 80x86指令系统和寻址方式PPT课件

合肥学院 计算机科学与技术系 何立新
《汇编语言程序设计》
3.2 80x86寻址方式
3.2.1 寻址、寻址方式的概念
寻址就是寻找操作数的地址。 寻址方式就是寻找操作数的方法。
操作数可以跟随在指令操作码之后,称为立即数;操作 数也可以存放在CPU内部的寄存器中,称为寄存器操作数。 绝大多数的操作数存放在内存储器中,称为存储器操作数。 指令指定操作数的位置,即给出地址信息,在执行时需要 根据这个地址信息找到需要的操作数。
合肥学院 计算机科学与技术系 何立新
《汇编语言程序设计》
第3章 80x86指令系统和寻址方式
教学要求:
1. 掌握一般指令系统的基本概念:指令格式、 功能和注意事项。
2. 重点掌握8086/8088指令系统中,各指令的 格式、寻址方式、指令类型 。
3. 了解其他(奔腾等)的寻址方式和指令类型。
合肥学院 计算机科学与技术系 何立新
•基址变址寻址
MOV AX , [ BP ] [ DI ]
•相对基址变址寻址 MOV AX , MASK [ BX ] [ SI ]
合肥学院 计算机科学与技术系 何立新
《汇编语言程序设计》
1) 立即寻址方式
定义:操作数作为指令的一部分而直接写在指令中,这种 操作数称为立即数,这种寻址方式也就称为立即数寻址方 式。
执行:4576H→AX
执行后:(AX)=4576H
CS→
AX
45
76
OP
76H
45H
MOV AX,4576H 指令的存储形式
合肥学院 计算机科学与技术系 何立新
《汇编语言程序设计》
2) 寄存器寻址方式
定义:指令所要的操作数已存储在某寄存器中,或把目标操 作数存入寄存器。把在指令中指出所使用寄存器(即:寄存 器的助记符)的寻址方式称为寄存器寻址方式。

8088汇编语言程序设计课程设计

8088汇编语言程序设计课程设计

8086/8088汇编语言程序设计课程设计设计背景汇编语言是计算机科学与技术专业中非常重要的一门课程,它是高级语言之后的一个阶段。

在本课程中,学生需要掌握8086/8088汇编语言的语法和应用。

为了更好地掌握汇编语言的使用,需要进行一定的课程设计练习。

设计目的本课程设计旨在帮助学生深入了解汇编语言的编写和实践操作,从而更好地掌握该技能。

该课程设计的主要目的包括:•加深学生对汇编语言的理解。

•培养学生的编程思维和动手能力。

•通过实践操作,让学生能够在以后的工作和学习中使用汇编语言编写程序。

设计内容本课程设计的主要内容包括以下几个部分:1. 编写程序学生需要使用8086/8088汇编语言编写程序。

编写过程中,需要注意程序的逻辑和语法。

程序可以有选择的使用一些特定的指令进行优化,以达到更高的执行效率。

2. 调试程序学生需要使用调试软件对编写的程序进行调试,以保证程序的正确性。

在调试过程中,需要注意调试工具的使用方法和操作步骤。

3. 撰写实验报告学生需要撰写课程设计实验报告,该报告需要包括以下主要内容:•设计目的和内容简介•程序设计思路和步骤•调试过程和结果分析•程序运行效果展示•总结和反思设计要求为了完成本课程设计任务,需要满足以下要求:1. 完成程序编写完成程序编写的任务,保证程序的正确性和合理性。

程序逻辑要清晰,格式化整齐,运行效率要高。

程序注释要清晰,要有比较好的可读性。

2. 良好的调试过程良好的调试过程是保证程序正确性的基础。

学生需要使用调试工具对程序进行调试,确保程序的正常运行。

在调试过程中,需要注意操作的步骤和方法。

3. 撰写实验报告实验报告需要各个方面都能全面体现学生的工作。

在撰写实验报告时,请注意实验报告的格式和内容要求,注意语言的规范性和格式的整齐性。

报告需要按时上交。

结束语本课程设计是学生在汇编语言学习的过程中,进行实践的重要环节,通过这个过程,学生能够更加全面的掌握汇编语言编程的技能。

第3章 8086∕8088汇编语言程序设计

第3章 8086∕8088汇编语言程序设计

【例3.11】负数统计 在内存中BUFFER地址起有10个字型 有符号数,统计其中负数的个数, 并存入Result单元中。 负数统计! DATA SEGMENT Buffer dw 2,10,-4,0,-3,5, … Result db ? DATA ENDS
CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV CX,10 MOV DL,0 LEA BX, Buffer NEXT2:: MOV AX,[BX] AND AX,AX JNS NEXT1
BR_N DW ? BRDATA ENDS BRCODE SEGMENT ASSUME CS:BRCODE,DS: BRDATA START: MOV AX,BRDATA MOV DS,AX MOV AX,BR_N MOV CL,4
MUL CL LEA BX,BR_TAB ADD BX,AX JMP DWORD PTR [BX] BRCODE ENDS ROUTINE SEGMENT ASSUME CS:ROUTINE
第3章 8086/8088汇编语言程序设计
3.1 3.2 3.3 3.4 3.5 3.6 3.7
主要内容 汇编语言程序设计的基本步骤 顺序程序设计 分支程序设计 循环程序设计 子程序设计 宏汇编 库的使用
学习目标
了解:汇编语言程序设计步骤,汇编语言中 重复汇编、库的建立和使用方法。 理解:顺序、分支、循环结构程序设计的思 路和方法,子程序、宏汇编的结构和使用方法。 应用:掌握本章所介绍的顺序程序设计、分 支程序设计、循环程序设计、子程序设计、宏定 义、宏调用的格式和方法,以及其中参数的使用 ,并能够在实践中灵活运用。
图3-3 用户程序、DOS与BIOS关系

汇编程序设计第三章

汇编程序设计第三章
指令 偏移地址 段地址 CS寄存器 IP寄存器
其中,ADDR为转向的符号地 址,FAR PTR则是表示段间转 移的操作符。
第3章 8086/8088寻址方式及指令系统
例:
CSEG1

SEGMENT
~ CSEG1段 ~ ~ ~ EAH 50H JMP指令 02H 00H 20H … 20000H ~ CSEG2段 ~ ~ ~ DSET 20250H 新(CS)=2000H 新(IP)=0250H 操作码
. . . . . . . . . 56H 34H
第3章 8086/8088寻址方式及指令系统
3.1.2 与转移地址有关的寻址方式
用来确定转移指令及转子指令的转向地址。
• 段内寻址(段内转移,不改变CS值) 段内直接寻址 段内间接寻址 JMP JMP JMP JMP JMP SHORT ADDR1 NEAR PTR ADDR2 WORD PTR TABLE [ BX ] FAR PTR NEXT DWORD PTR [ BX ]
第3章 8086/8088寻址方式及指令系统
MOV AX,[SI]
如(AX)=5,(SI)=20H, (DS)=1000H
则物理地址 =1000H×10H+20H=10020H 若(10020H)=0FFH, (10021H)=0FFH,则执行后: (AX)=0FFFFH,其他不变。
AX AH AL DS SI
则执行结果为: (AX)=5678H
第3章 8086/8088寻址方式及指令系统 (7) 相对基址变址寻址方式 • 在基址加变址寻址方式中的有效地址再加一个偏移值,即把一 个基址寄存器(BX,BP)的内容加上一个变址寄存器(SI, DI),再加上指令中8位或16位位移量与段寄存器(DS,SS) 的组合为操作数地址。 例如:MOV AX,MASK[BX][SI] MOV AX,[MASK+BX+SI] MOV AX,MASK[BX+SI] MOV AX,[MASK+BX][SI]

第3章 汇编语言程序设计2

第3章 汇编语言程序设计2

第3章汇编语言程序设计2第3章汇编语言程序设计⏹3.1 概述⏹3.2 汇编语言源程序的格式⏹3.3 伪操作命令⏹3.4 DOS 和BIOS 调用⏹3.5 汇编语言程序设计举例33.3 伪操作命令⏹与CPU 指令的区别:⏹CPU 指令对应CPU 的一种操作⏹产生目标代码,由CPU 执行⏹伪操作是给汇编程序的命令⏹不产生代码,由汇编程序处理43.3 伪操作命令⏹3.3.2 数据定义伪操作⏹3.3.3 符号定义伪操作⏹3.3.4 段定义伪操作⏹3.3.5 过程定义伪操作⏹3.3.7 宏处理伪操作53.3.2 数据定义伪操作⏹作用:⏹定义变量类型⏹赋初值⏹[变量名] 伪操作操作数[,操作数...]3.3.273.3.2 数据定义伪操作⏹2. DW (Define Word)⏹定义变量类型为WORD ⏹低字节在前,高字节在后⏹AB DB ’AB ’;41H,42H ⏹ABDW DW ’AB ’;42H,41H ⏹OFFAB DW AB;AB 的偏移地址83.3.2 数据定义伪操作⏹ABC DB 0,1,?,?,?⏹LPI DW ?,54,?⏹BUFFER DW 3,4,$+393.3.2 数据定义伪操作⏹3. DD (Define Doubleword)⏹定义变量类型为DWORD ⏹ABDD DD ’AB ’;42H,41H,00H,00H ⏹ADRS DD TABLE ;偏移地址,段地址103.3.2 数据定义伪操作⏹4.DQ (Define Quadword)⏹定义变量类型为QWORD ⏹NUM DQ 0011223344556677H ⏹;77H,66H,55H,44H,33H,22H,11H,00H113.3.2 数据定义伪操作⏹5. DT (Define Tenbytes)⏹定义变量类型为TBYTE ⏹10个字节的压缩BCD 数⏹DECML DT 1234567890H ⏹;90H,78H,56H,34H,12H,00,00,00,00,00123.3.2 数据定义伪操作⏹重复操作符DUP ⏹n DUP(初值[,初值...])⏹BUFF DB 10 DUP(?)⏹ZERO DW 30 DUP(0)⏹MASK DB 5 DUP(’OK!’)133.3.2 数据定义伪操作⏹错误定义:⏹ERR1:DW 99⏹ERR2DB 25*60⏹ERR3DD ’ABCD ’出存储器中变量的存储结构A400153.3.3 符号定义伪操作⏹作用:⏹符号重命名⏹或定义新的类型⏹EQU 、=163.3.3 符号定义伪操作⏹1. EQU⏹名字EQU 表达式⏹给表达式的值赋名字#define ⏹程序简洁,便于维护⏹不允许同一符号重复定义17⏹例如:PORT EQU 3F8H ⏹在程序中可使用⏹MOV DX, PORT ⏹对DX 进行赋值,实际上PORT 就是一个常量。

第三章 8086指令系统与汇编语言程序设计 微机原理与接口技术 教学课件

第三章 8086指令系统与汇编语言程序设计 微机原理与接口技术 教学课件

2、组成
操作码 :说明计算机要进行的操作。 操作数 :说明操作对象。
例:MOV AX, BX
2
3.1基本概念
二、指令系统
一台计算机期目的而用程序设 计语言设计的一系列操作,体现形式是指令序列。
3
3.2.1 8086的数据寻址方式
与数据有关的寻址方式:以 MOV 指令为例
12
四、寄存器间接寻址
注:1、不允许使用AX、CX、DX 存放 EA MOV AX, [CX]
2、源操作数和目的操作数的字长一致 MOV DL, [ BX ] ; BX指示一个字节单元 MOV DX, [ BX ] ; BX指示一个字单元
13
五、基址变址寻址
特点:1、操作数的有效地址是一个基址寄存器和 一个变址寄存器的和。
BX SI
有效地址 =
+
BP DI
指令
基址寄存器 变址寄存器
变址值
内存
+ EA 数据
基址值
14
五、基址变址寻址
2、如未指明操作数所在的段,指令中指定的基址寄存器是BX, 默认为数据段;基址寄存器是BP时,默认为堆栈段。
例:MOV AX, [BX] [DI] ;PA = 16d DS + BX+DI MOV AX, [BP] [SI] ;PA = 16d SS + BP +SI
• 立即数寻址
MOV AX , 3069H
• 寄存器寻址
MOV AL , BH
• 直接寻址
MOV AX , [ 2000H ]
• 寄存器间接寻址 MOV AX , [ BX ]
• 基址变址寻址 MOV AX , [ BP ] [ DI ]

第三章 80868088的指令系统

第三章 80868088的指令系统

3.1 指令的基本格式一、指令构成微计算机的指令系统通常由几十种或百余种指令组成(可见表2-1)。

每种指令又由两个字段(Field)构成:l.操作码(OP-Code)字段该字段指示计算机所要执行的操作类型,由一组二进制代码表示,在汇编语言中又用助记将(Mnemonic)代表。

8086执行指令时,首先将操作码从指令队列取入执行部件EU中的控制单元,经指令译码器识别后,产生执行本指令操作所需的时序性控制信号,控制计算机完成规定的操作。

2.操作数(Oprand)字段该字段则是指出指令执行的操作所需的操作数。

在操作数字段中,可以是操作数本身,或是操作数地址或是操作数地址的计算方法。

微计算机中此字段通常可有一个或两个,称前者为单操作数指令,称后者为双操作数指令。

而双操作数又分别称为源操作数src (source)和目的操作数dst(destination)。

在指令执行之前,src和dst均为参加运算处理的两个操作数,指令执行之后,在dst中则存放运算处理的结果。

指令的基本格式如下:二、80868086的指令长度可在1~6字节的范围,如图3-1所示。

其中B l和B0为基本字节,B3~B6将根据不同指令作相应的安排。

表3-1 8086指令格式(1)B1字节各字段定义如下:OP--指令操作码。

D--表示方向。

D=1寄存器为目的,D=0寄存器为源。

W--表示字节或字处理方式。

W=0为字节指令,W=1为字指令。

(2)B2字节各字段定义如下:MOD--给出指令的寻址方式。

8086的一条指令中,最多可使用两个操作数,它们不能同时位于存储器中,最多只能有一个是存储器操作数。

当MOD=11时为存储器方式,即有一个操作数位于存储器中;MOD=00,没有位移量;MOD01,只有低8位位移量,需将符号扩展8位,形成16位;MOD=10有16位位移量。

当MOD=1l时,为寄存器方式,两个操作数均为寄存器。

REG--表示指令中只有一个操作数,这个操作数为寄存器,可见表3-1,表中左部示出寄存器对应的编码。

(完整版)(整理)《80x86汇编语言程序设计》教案及答案.

(完整版)(整理)《80x86汇编语言程序设计》教案及答案.

(完整版)(整理)《80x86汇编语言程序设计》教案及答案.《汇编语言程序设计》教案附:习题参考答案《IBM-PC汇编语言程序设计》(第2版)沈美明、温冬婵编著教案编写时间:2007年8月18日前言1.汇编语言是计算机能提供给用户的最快而又最有效的语言,也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言。

2.汇编语言程序设计是高等院校电子计算机硬、软件及应用专业学生必修的核心课程之一。

它不仅是计算机原理、操作系统等其它核心课程的必要先修课,而且对于训练学生掌握程序设计技术、熟悉上机操作和程序调试技术都有重要作用。

3.本教材共有十一章,其内容安排如下:(1).第一、二章为汇编语言所用的基础知识。

(2).第三章详细介绍80x86系列CPU的指令系统和寻址方式。

(3).第四章介绍伪操作、汇编语言程序格式及汇编语言的上机过程。

(4).第五、六章说明循环、分支、子程序结构和程序设计的基本方法。

(5).第七章说明宏汇编、重复汇编及条件汇编的设计方法。

(6).第八章叙述输入/输出程序设计方法,重点说明中断原理、中断过程及中断程序设计方式。

(7).第九章说明BIOS和DOS系统功能调用的使用方法。

(8).第十~十一章分别说明图形显示、发声及磁盘文件存储的程序设计方法,同时提供各种程序设计方法和程序实例。

附:教学参考书1.沈美明、温冬婵编著,IBM–PC汇编语言程序设计(第2版),清华大学出版社,2001年(教材)2.沈美明、温冬婵编著,IBM–PC汇编语言程序设计,清华大学出版社,1991年3.沈美明、温冬婵编著,IBM–PC汇编语言程序设计—例题习题集,清华大学出版社,1991年6月4.沈美明、温冬婵、张赤红编著,IBM–PC汇编语言程序设计—实验教程,清华大学出版社,1992年5.周明德,微型计算机IBM PC/XT(0520系列)系统原理及应用(修订版),清华大学出版社,19916.郑学坚、周斌,微型计算机原理及应用(第二版),清华大学出版社,19957.王士元、吴芝芳,IBM PC/XT[长城0520] 接口技术及其应用,南开大学出版社,19908.杨素行,微型计算机系统原理及应用,清华大学出版社,19959.戴梅萼、史嘉权,微型计算机技术及应用—从16位到32位(第二版),清华大学出版社,199610.张昆藏,IBM PC/XT微型计算机接口技术,清华大学出版社,199111.孟绍光,李维星,高档微机组成原理及接口技术(80386/80486/Pentium),学苑出版社,199312.吴秀清,周荷琴,微型计算机原理与接口技术,中国科学技术大学出版社目录第 1 章基础知识 (5)1.1进位计数制与不同基数的数之间的转换 (5)1.2二进制数和十六进制数的运算 (6)1.3计算机中数和字符的表示 (7)1.4几种基本的逻辑运算 (7)第 2 章80X86计算机组织 (8)2.180X86微处理器 (8)2.2基于微处理器的计算机系统构成 (8)2.3中央处理机 (9)2.4存储器 (10)2.5外部设备 (11)第 3 章80X86的指令系统和寻址方式 (12)3.180X86的寻址方式 (12)3.2程序占有的空间和执行时间 (14)3.380X86的指令系统 (14)第 4 章汇编语言程序格式 (31)4.1汇编程序功能 (31)4.2伪操作 (31)4.3汇编语言程序格式 (35)4.4汇编语言程序的上机过程 (38)第 5 章循环与分支程序设计 (40)5.1循环程序设计 (40)5.2分支程序设计 (41)5.3如何在实模式下发挥80386及其后继机型的优势 (41)第 6 章子程序结构 (43)6.1子程序的设计方法 (43)6.2子程序的嵌套 (44)6.3子程序举例 (44)第7 章高级汇编语言技术 (46)7.1宏汇编 (46)7.2重复汇编 (47)7.3条件汇编 (48)第8 章输入/输出程序设计 (49)8.1I/O设备的数据传送方式 (49)8.2程序直接控制I/O方式 (50)8.3中断传送方式 (50)第9 章BIOS和DOS中断 (53)9.1键盘I/O (53)9.2显示器I/O (55)9.3打印机I/O (56)9.4串行通信口I/O (57)第10 章图形与发声系统的程序设计 (58)10.1显示方式 (58)10.2视频显示存储器 (58)10.3EGA/VGA图形程序设计 (59)10.4通用发声程序 (60)10.5乐曲程序 (61)第11 章磁盘文件存取技术 (62)11.1磁盘的记录方式 (62)11.2文件代号式磁盘存取 (63)11.3字符设备的文件代号式I/O (64)11.4BIOS磁盘存取功能 (65)附录:《IBM—PC汇编语言程序设计》习题参考答案 (66) 第一章.习题 (66)第二章.习题 (67)第三章.习题 (68)第四章.习题 (81)第五章.习题 (86)第六章.习题 (104)第七章.习题 (117)第八章.习题 (124)第九章.习题 (129)第十章.习题 (132)第十一章.习题 (143)第 1 章基础知识【教学目的】本章内容是本课程的基础,通过本章学习,使学生明确汇编语言程序设计的学科性质、基本内容和学习意义,掌握数制的转换、数据的编码,了解本门课程的教学要求和学习方法。

80X86汇编语言程序设计教程+课后习题答案(清华大学版)

80X86汇编语言程序设计教程+课后习题答案(清华大学版)

第二章答案Tarzan 版题2.1 8086/8088通用寄存器的通用性表现在何处?8个通用寄存器各自有何专门用途?哪些寄存器可作为存储器寻址方式的指针寄存器?答:8086/8088通用寄存器的通用性表现在:这些寄存器除了各自规定的专门用途外,他们均可以用于传送和暂存数据,可以保存算术逻辑运算中的操作数和运算结果;8个通用寄存器的专门用途如下:AX 字乘法,字除法,字I/OBX 存储器指针CX 串操作或循环控制中的计数器DX 字乘法,字除法,间接I/OSI 存储器指针(串操作中的源指针)DI 存储器指针(串操作中的目的指针)BP 存储器指针(存取堆栈的指针)SP 堆栈指针其中BX,SI,DI,BP可作为存储器寻址方式的指针寄存器题2.2 从程序员的角度看,8086/8088有多少个可访问的16位寄存器?有多少个可访问的8位寄存器?答:从程序员的角度看,8086/8088有14个可访问的16位寄存器;有8个可访问的8位寄存器;题2.3 寄存器AX与寄存器AH和AL的关系如何?请写出如下程序片段中每条指令执行后寄存器AX的内容:MOV AX,1234HMOV AL,98HMOV AH,76HADD AL,81HSUB AL,35HADD AL,AHADC AH,ALADD AX,0D2HSUB AX,0FFH答: MOV AX,1234H AX=1234HMOV AL,98H AX=1298HMOV AH,76H AX=7698HADD AL,81H AX=7619HSUB AL,35H AX=76E4HADD AL,AH AX=765AHADC AH,AL AX=D15AHADD AX,0D2H AX=D22CHSUB AX,0FFH AX=D12DH题2.4 8086/8088标志寄存器中定义了哪些标志?这些标志可分为哪两类?如何改变这些标志的状态?答: 8086/8088标志寄存器中定义了9个标志,如下:CF: Carry FlagZF: Zero FlagSF: Sign FlagOF: Overflow FlagPF: Parity FlagAF: Auxiliary Carry FlagDF: Direction FlagIF: Interrupt-enable FlagTF: Trap Flag这些标志可分为两类,分别为:1、运算结果标志;2、状态控制标志;采用指令SAHF可把AH中的指定位送至标志寄存器低8位SF、ZF、AF、PF、CF;采用CLC可清除CF,置CF到0采用STC可置CF到1采用CLD可置DF到0采用sTD可置DF到1采用CLI可置IF到0采用STI可置IF到1另外,在某些指令执行过程中会改变部分标志的状态;题2.5 请说说标志CF和标志OF的差异。

第3章 8086指令系统及汇编语言程序设计

第3章 8086指令系统及汇编语言程序设计

第3章 8086指令系统及汇编语言程序设计
指令格式
操作码 [操作数],[操作数]
目标操作数 执行何种操作 参加操作的数据或数据存放的地址 源操作数
7
第3章 8086指令系统及汇编语言程序设计
指令格式:
零操作数指令: 操作码
单操作数指令: 操作码 操作数
双操作数指令: 操作码 操作数,操作数
多操作数指令: 三操作数及以上
第3章 8086指令系统及汇编语言程序设计
(5)寄存器相对寻址方式(或称直接变址寻址方式)
定义:操作数在存储器内,指令中寄存器的内容 与指令指定的位移量(DISP)之和作为操作数所在存储 单元的有效地址。寄存器可以是基址寄存器BX、BP, 也可以是变址寄存器SI、DI。位移量是一个8位(DISP8) 或16位(DISP16)的带符号二进制数。有效地址EA的 计算方法为:
图3-7 立即数寻址
第3章 8086指令系统及汇编语言程序设计
注意: (2)寄存器寻址方式 ● 寄存器寻址方式的指令操作在CPU 定义:操作数放在寄存器内,由指令直接给出某个 内部执行,不需要执行总线周期,执行速 寄存器的名字,以寄存器的内容作为操作数。寄存器可以 度快。 是16位的 AX、BX、CX、DX、SI、DI、SP、BP寄存器, ● 寄存器寻址方式既适用于指令的源 也可以是8位的 AH、AL、BH、BL、CH、CL、DH、DL 寄存器。 操作数,也适用于目的操作数,并且可同 时用于源操作数和目的操作数。 【例3-2】 MOV AX,CX ;(AX)←(CX) INC AL ;(AL)←(AL)+1 指令执行结果如图3-8 所示
第3章 8086指令系统及汇编语言程序设计
(5)寄存器相对寻址方式(或称直接变址寻址方式) 定义:操作数在存储器内,指令中寄存器的内容 与指令指定的位移量(DISP)之和作为操作数所在存储 单元的有效地址。寄存器可以是基址寄存器BX、BP, 也可以是变址寄存器SI、DI。位移量是一个8位(DISP8) 或16位(DISP16)的带符号二进制数。有效地址EA的 计算方法为:
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第三章 汇编语言程序设计 3.1 程序设计语言概述 3.2 8086/8088汇编语言的基本语法
3.3 汇编语言程序设计基本方法
3.1 程序设计语言概述
程序设计语言是专门为计算机编程所配置的语言。它们按照
形式与功能的不同可分为3种,即 :
机器语言—— 0、1二进制代码书写指令;难认,记,写。
★例:
JMP
MOV
BB
AX,SEG SUBP
MOV DX,OFFSET AA ; 假设AA为变量名
3.2.3 汇编语言的数据
4、数值表达式 一个数值表达式可自由常量、字符常量以及代表常量的名字 等用算术、逻辑和关系运算符(Operator)连接而成。 1)算术运算符 + 、-、*、/、MOD、SHR、SHL 如:MOV AX, 19 MOD 7 MOV BX, AA+1 MOV AX, BX SHR 3
3.2.2 汇编语言语句的类型和格式
指令助记符 主要为8086/8088CPU指令系统中指令助记符。 操作数 立即操作数 如:MOV BX,1000+5*3 寄存器操作数 如:MOV BX,AX 存储器操作数 如:mov bx,[100H] 注释 ;注明语句或程序的作用
3.2.2 汇编语言语句的类型和格式
开始 指令1 指令2 ……
指令n
结束
例:对两个8字节无符号数求和,这 两个数分别用变量D1及D2表示。 将两数之和的最高位进位放在AL中, 两数之和的其他位按从高到低顺序依 次放在SI,BX,CX,DX中。
程序如下:
D D1 D2 D C SEGMENT DB 12H,34H,56H,78H,9AH,0ABH,0BCH,0CDH DB 0CDH,0BCH,0ABH,9AH,78H,56H,34H,12H ENDS SEGMENT LEA DI,D2 ASSUME CS:C, DS:D ADD DX,[DI] BG: MOV AX,D ADC CX,[DI+2] MOV DS,AX ;给DS赋段值 ADC BX,[DI+4] LEA DI, D1 ;偏移地址送DI ADC SI,[DI+6] MOV DX,[DI] ;取第1操作数 MOV AL,0 MOV CX,[DI+2] ADC AL,0 MOV BX,[DI+4] MOV AH,4CH MOV SI,[DI+6] INT 21H CLC C ENDS END BG
3.2 8086/8088汇编语言的基本语法 3.2.1 认识汇编程序 3.2.2 汇编语言语句的类型和格式 3.2.3 汇编语言的数据
3.2 8086/8088汇编语言的基本语法
本节知识点:熟悉汇编语言程序的基本结构 掌握汇编语言语句几种类型、格式 掌握汇编语言数据格式 熟悉伪指令的构成、种类、作用
3.2.1 认识汇编程序---段结构
汇编源程序一般由若干段组成,每个段以SEGMENT作为段的开 始,以ENDS作为段的结束,这两者前面都要冠以相同的名字。 段分为:代码段、堆栈段、数据段和附加段4种,但代码段 与堆栈段是不可少的,数据段与附加段可根据需要设置。 整个源程序必须以END语句来结束,它通知汇编程序停止 汇编。END后面的标号START表示该程序执行时的起始地 址。
2、伪指令语句的格式 [名字] 伪指令 [参数表][;注释] 1)名字 用标识符定义的常量名、变量名、过程名、段名以及宏名等。 注意:汇编程序是不区分大、小写;名字的后面没有冒号。 例如:ONE DATA STRING AA DATA EQU 1 ;常量名 ;段名 ;变量名
SEGMENT DW ENDS 1,2,3
3.3.2 分支结构程序
利用转移指令,控制计算机执行某段程序或不执行某段程序。
满足判断条件 1?
2)逻辑运算符---AND OR NOT XOR
如:MOV AX, 9999H XOR 0F0F0H
3.3 汇编语言程序设计基本方法
本节重点:熟悉程序设计的基本步骤
掌握结构化程序设计的概念
掌握3种基本结构的程序设计方法 了解过程设计的步骤
3.3.1 顺序结构程序
顺序结构程序, 在程序中不包含任何转移类指令. 执行时 按指令的先后次序从第一条开始逐条执行,直至程序结束.
DATA STACK
ENDS SEGMENT
DB 200 DUP(0)
STACK CODE
ENDS SEGMENT
ASSUME
DS:DATA,SS:STACK,CS:CODE
;由ASSUM伪指令定义各段寄存 器的内容
3.2.1 认识汇编程序
START: MOV MOV MOV MOV MOV NEXT: ADD AX,DATA DS,AX CX,50 AX,0 BX,1 AX,BX ;将DS初始化为数据段首址 的段值DATA ;CX置入循环计数值 ;清AX累加器 ;BX置常量1 ;累加奇数和TA 3.宏指令
伪指令助记符 参数,参数,…… ;注释
DATA SEGMENT
DW 20H,-30H ;定义变量
ENDS
是以某个宏名字定义的一段指令序列。
3.2.2 汇编语言语句的类型和格式
二、汇编语言语句的格式 1、指令性语句 [标号:] 指令助记符 [操作数表][;注释] 标号(Label) 1)标号及其属性 标号作为程序转移的目标地址--指令的符号地址(逻辑地址) 标号3种属性——段地址、段内偏移量以及类型(near/far) 标号定义:字母开头,由字母、数字、特殊字符(?、_等) 出现位置:循环、转移、调用指令中
3.2.1 认识汇编程序—完整的定义格式
例:求从1开始连续50个奇数之和,并将结果存放在名字为SUM的字 存储单元中。
DATA SUM SEGMENT DW 0 ;定义数据段,DATA为段名 ;由符号(叫变量名)SUM指定的 内存单元类型定义为一个字,初 值为0 ;定义数据段结束 STACK ;定义堆栈段,这是组合类型伪指 令,它规 定在伪指令后须跟 STACK类型名 ;定义堆栈段为200个字节的连续 存储区, 且每个字节的值为0 ;定义堆栈段结束 ;定义代码段
3.2.2 汇编语言语句的类型和格式
一、汇编语言语句的种类 语句的种类-有3种基本语句:
指令语句
伪指令语句 宏指令语句
3.2.2 汇编语言语句的类型和格式
1.指令语句(也称为硬指令) 是一种执行性语句,它在汇编时,汇编程序将为之产生一一对应 的机器目标代码。
标号: 指令助记符 操作数,操作数
汇编语言—— 助记符、符号地址、标号书写程序;通用型、可移植性差; 但可直接对硬件操作。 高级语言—— 通用性好、简单易读、易写;但编译时间长,占内存;对硬 件编程复杂。
为什么学习汇编语言?
汇编语言本质是机器语言,可直接对硬件控制,运行速度 快,占用内存少 适用场合:要求执行时间短,占用小存储容量,如实时控 制软件、底层开发、直接控制硬件的软件开发
十六进制
0B800H
01100100B
二进制
2) 字符串
字符串常量是用单引号或双引号括起来的单个字符 或多个字符 其数值是每个字符对应的ASCII码值 例如: ‘d’(等于64H) ‘AB’(等于4142H)
‘Hello, Assembly !’
3) 符号常量
符号常量使用标识符表达一个数值 MASM提供等价机制,用来为常量定义符号名 符号定义伪指令有“等价EQU”和“等号=”: 符号名 EQU 数值表达式 符号名 EQU <字符串> ;MASM 5.x不支持 符号名 = 数值表达式 EQU用于数值等价时不能重复定义符号名,但“=”允 许有重复赋值。例如: X= 7 ;等效于:X qeu 7 X= X+5 ;“X EQU X+5”是错误的
8000h,?,'AB' 64h maxint maxint dup(0)
字变量定义实例
3.2.3 汇编语言的数据—地址参数
3、地址型参数 指令参数可为地址型的,该参数表示存储单元的地址(值) 地址型参数主要形式:

标号 名字

变量名 段名 过程名(子程序名)
;假设BB为标号
;假设SUBP为过程名
DB‘Hello, Everybody!’,0DH,0AH,‘$’;
3.2.2 汇编语言语句的类型和格式
2)伪指令 符号定义伪指令—EQU/= 数据定义伪指令—DB/DW/DD 段定义伪指令—SEGMENT/ENDS/ASSUME 过程定义伪指令—PROC/ENDP 定位伪指令—ORG 3)伪指令参数 各参数之间用逗号分隔,可以是常量、变量名、表达式
INC
INC DEC
BX
BX CX
;求下一个奇数
;循环计数器作减1计数
JNE
MOV MOV
NEXT
SUM,AX AH,4CH
;未计完50次时,转至NEXT循环
;累加和送存SUM单元 ;DOS功能调用语句,机器将结束本
INT
CODE ENDS END
21H
START
程序的运行,并返回DOS状态
;代码段结束 ;整个程序汇编结束
3.2.3 汇编语言的数据——变量
2、变量 必须事先定义才能有效 变量定义为变量申请固定长度的存储空间,并将该空间的基 址转换为符号地址 变量定义使用伪指令实现 变量定义的同时可对存储单元初始化 格式——变量名 伪指令助记符 初值表 初值表是用逗号分隔的参数
3.2.3 汇编语言的数据—变量
1) 数值常量
指由10、16、2和8进制形式表达的数值,各种进制 的数据以后缀字母区分,默认不加后缀字母的是十 进制数
十进制 由0 ~ 9数字组成,以字母D(d)结尾(缺 省情况可以省略) 由0 ~ 9、A ~ F数字组成,以字母H(h)结 尾,以字母开头的常数需要加一个前导0 由0和1两个数字组成,以字母B(b)结尾 100,255D 64H,0FFH
相关文档
最新文档