微机原理03
《微机原理第三章魏》PPT课件
第三章 汇编语言程序设计
概述
汇编语言:汇编语言是一种面向计算机的符号语 言。用指令的助记符、符
号地址、标 号、伪指令等书写程序的
语言。
汇编语言源程序:用汇编语言书写的源程序。
汇编: 程序
将汇编语言源程序翻译成机器语言 的过程。
3.1 汇编语言的基本元素
在8086/8088汇编语言中,有两类汇编语言指令。 • 一类是执行性指令,称为指令语句,汇编程序
2.关系运算符
关系运算符:EQ、NE、LT、GT、LE、GE; 相等 EQ (Equal)、 不等 NE (Not Equal)、 小于 LT(Less Than)、大于 GT (Greater Than)、 小于等于 LE (Less Than or Equal)、 大于等于 GE (Greater Than or Equal) 关系运算符连接的两个操作数,必须都是数字的 或是在同一段内的存储器地址。 若关系为假(关系不成立) ,则结果为0H;
AX,[BP +
4] ;
4.注释
该项是为源程序所加的注解,用于提高程序 的可读性。在注释前面要加分号“ ;”,它位于 操作数之后。汇编时,对注解不作处理,仅在列 源程序清单时列出,供编程人员阅读。 例如:
IN AL,PORTB ;读B口到AL中
[标号] 指令助记符 [操作数][;注释]
3.1.2 汇编语言的运算符
例如:
MOV BX,((PORT LT 5) AND 20) OR ((PORT GE 5) AND 30)
当PORT的值小于5时,上述指令汇编为: MOV BX,20
否则为 MOV BX,30
3.取值运算符(分析运算符)
把存储器地址操作数分解成它的组成部分。
微机原理接口技术03_指令系统
3.2.1 数据的寻址方式
基址变址寻址同样适用于数组或表格处理,首地 址存放在基址寄存器中,变址寄存器访问数组中各元
素。因两个寄存器都可以修改,所以它比寄存器相对
寻址方式更灵活。需要注意的是,两个寄存器不能均 为基址寄存器,也不能均为变址寄存器。
3.2.1 数据的寻址方式
7.基址变址相对寻址 (Relative Based Indexed Addressing) 操作数的有效地址为指令中规定的1个基址寄存 器和1个变址寄存器的内容及指令中指定的位移量三 者之和。 位移量[基址寄存器][变址寄存器] 可以表示成多种形式组合。寻址寄存器要放在方括 号中。
3.2.1 数据的寻址方式
4.寄存器间接寻址(Register Indirect Addressing) 操作数的有效地址存放在基址寄存器或变址寄存 器中,而操作数则在存储器中。对16位数进行寄存器 间接寻址时可用的寄存器是基址寄存器BX、BP和变 址寄存器SI、DI。使用BP时默认的段寄存器为SS, 使用其他寄存器默认的段寄存器为DS。 操作数有效地址格式为:[间接寻址的寄存器]。 寻址寄存器放在方括号中。
CPU执行指令时,指令是按顺序存放在存储器 中的,而程序执行顺序是由CS和IP的内容来决定的。 当程序执行到某一转移或调用指令时,需脱离程序 的正常顺序执行,而把它转移到指定的指令地址, 程序转移及调用指令通过改变IP和CS内容,就可改 变程序执行顺序。
3.2.2 程序转移地址寻址方式
根据程序转移地址相对于当前程序地址的关 系,可分为段内、段外;又根据转移地址是否直 接出现在指令中,分为直接、间接,所以有四种 程序转移寻址方式:段内直接寻址、段内间接寻
第3章
指令系统
指令是计算机用以控制各个部件协调
微机原理第三章习题答案
习题3答案1. 指出下列指令的错误原因。
(1) AND AX, DL ;类型不匹配(2) ADD CS, DX ;CS不能作为目的操作数(3) MOV AX, IP ;IP不能作为指令的操作数(4) MOV [BP][SI], [SI] ;两个操作数不能同时为内存操作数(5) SUB [BP][SI], ES:DX ;段超越前缀只能用在内存操作数之前(6) XCHG AL, [SI][DI] ;没有[SI][DI]这种操作数形式(7) JGE AX ;条件转移指令的操作数只能是标号(8) PUSH DL ;对堆栈不能进行字节操作2. 用一条指令将BX清0。
(请给出3种方法)方法1:MOV BX, 0方法2:SUB BX, BX方法3:AND BX, 0 ;将BX和0做与,可以将BX清零方法4:XOR BX, BX3. 写出实现下列功能的指令序列。
(1) 判断AX的值,若AX等于0,则转到标号LABEL处。
(请写出3种方法)方法1:CMP AX, 0JZ LABEL ; 如果ZF = 0,说明AX为0,因为CMP指令是做减法,但是不写回结果; 因此指令执行后AX内容不会受到破坏方法2:TEST AX, 0FFHJZ LABEL ; 如果ZF = 0,说明AX为0,TEST指令做与运算,可是不写回结果,只影响标志位。
; 和0与清零,和1与不变,所以和FFH做与的结果是AX本身,但是此时标志位已; 经改变了,所以可以利用标志位来判断,但是AX内容却没有受到任何破坏方法3:AND AX, 0FFH ;这个方法的原理和方法2其实是完全一致的JZ LABEL(2) 将AL的高4位与低4位分别放入AH与AL的低4位,并将AH与AL的高4位清0。
MOV AH, ALAND AL, 0FH ; AL高4位通过与清零,而低4位保持不变MOV CL, 4SHR AH, CL ; 这两条指令通过逻辑右移将AH的高4位清零,因为SHR在右移后,高位补零(3) 若AX和BX中的数恰好1个是奇数、1个是偶数,则将奇数放入AX,偶数放入BX;否则,AX和BX不变。
微机原理第3章习题与答案解析
习题一、选择题1.寻址方式指出了操作数的地点,一般来说_______。
A.立刻寻址给出了操作数的地点B.寄存器直接寻址的操作数在寄存器内,而指令给出了储存器C.直接寻址直接给出了操作数自己D.寄存器直接寻址的操作数包括在寄存器内,由指令指定寄存器的名称答案: D2.寄存器寻址方式中,操作数在_________。
A. 通用寄存器B. 货仓C.内存单元D.段寄存器答案: A3.寄存器间接寻址方式中,操作数在_________ 。
A. 通用寄存器B. 货仓C.内存单元D.段寄存器答案: C4.以下指令中的非法指令是 ______。
A. MOV [SI+BX], AXB.MOV CL, 280C.MOV [0260H], 2346HD.MOV BX, [BX]答案: B5.设 (SP)=0100H ,(SS)= 2000H ,履行 PUSH BP 指令后,栈顶的物理地点是 _____。
A.200FEHB.0102HC. 20102HD.00FEH答案: A6.指令 LEA BX, TAB 履行后,其结果是 ______。
A. 将 TAB 中内容送 BXB.将 TAB 的段基址送 BXC.将 TAB 的偏移地点送 BXD.将 TAB 所指单元的储存内容送 BX答案: C7.以下正确的指令格式有______。
A.MOV [BX], 1B.MOV AL, 0345HC.MOV ES: PTR[CX], 3D. XLAT答案: D8.设 (AX)=C544HA.CF=0,OF=0 ,在履行指令B.CF=0,OF=1ADD AH,AL 以后,C.CF=1,OF=0______。
D,CF=1,OF=1答案: C9.若 AL 、 BL 再履行 DAA 中是压缩BCD后, (AL)=_____数,且在履行。
ADD AL, BL 以后,(AL)=0CH , CF=1 ,AF=0 。
A.02HB.12HC.62HD.72H 答案: B10.履行以下程序后AL 的内容为 _____。
微机原理与接口技术实用教程03PPT课件
disp与寄存器均在指令中给出。 例: MOV AX,5[BP][SI]
06.11.2020
>>微机原理<<
12
⑧ 隐含寻址:指令本身隐含了操作数的地址, 例如:字符串操作指令 MOVS, 源操作数由DS:SI寄存器间接寻址, 目的操作数由ES:DI寄存器间接寻址。
以各种类型访问存储器时,存储单元地址的组成:
寄存器之间或寄存器与存储器之间内容交换。
XCHG OPR1,OPR2 ;(OPR1) 例:xchg ax, cx
(OPR2)
06.11.2020
>>微机原理<<
19
Ⅳ. 字节转换指令:常用于查表。
格式:XLAT [转换表] 即:XLAT ;(BX+AL)-AL,BX的内容是表的首地 址,AL的内容是表内的序号。采用隐含寻址方式。
06.11.2020
>>微机原理<<
13
3.2 8086/8088的指令系统
3.2.1 数据传送指令
a,除SAHF外不影响标志位,SAHF是将AH 内容送到 标志寄存器的低8位;
b,不能用CS作为目的操作数; c,源操作数和目的操作数不能同时在存储器中,
即:不能在一条指令中实现数据在存储器中的传送。
06.11.2020
>>微机原理<<
3
指令的一般格式:
操作助记符 目的操作数(或其位置),源操作数(或其位置)
dst
src
例如: MOV AX, [SI] MOV AX, ES:[SI]
对应的机器码是8BH,04H 对应的机器码是26H,8BH,04H
06.11.2020
微机原理课程总结3章
第3章从8086到Pentium系列微处理器的技术发展由于课时的关系,本章内容一般作为自学或讨论学习的内容。
但是,本章内容对本课程学习的升华具有潜在的意义,故在此也进行提示。
3.1分析教材内容本章主要对80386 CPU,同时也对80486及Pentium微处理器的改进之处和特点进行简单提示。
3.1.1分析重点难点问题1. 80386微处理器1) 80386的特点及其体系结构,请参见教科书P50-52,注意:硬件支持多任务处理。
2) 80386引脚的功能,请参教科书见P53,注意:理解协处理器接口信号。
3) 80386的寄存器组,请参见教科书P54-56,注意:掌握各寄存器的功能。
4) 80386的工作模式,请参见教科书P57,注意:理解三种模式,3种工作模式可以相互转换。
5) 80386中断,请参见教科书P59-60,注意:80386的中断管理机制在实模式和保护模式下是不同的。
2. 80486微处理器1) 80486的主要特点,请参见教科书P60-61。
2) 80486的内部结构,请参见教科书P61-64。
注意和80386的区别。
3. Pentium微处理器1) Pentium体系结构,请参见教科书P65-67,注意Pentium微处理器在486体系结构基础上,还作了哪些增强性的改进。
2) Pentium Ⅱ微处理器,请参见教科书P68。
注意其结构上的特色。
3) Pentium Ⅲ微处理器,请参见教科书P69。
注意其SSE指令。
4) Pentium Ⅳ微处理器,请参见教科书P69。
注意其两组独立工作的ALU。
3.1.2 典型例题解析本章例题主要从微处理机体系结构和新的设计思想出发,以8086微处理机为基础,把重点放在Pentium微处理机的新体系结构和新的设计思想上。
例如Pentium微处理机新体系结构的特点?相对8048体系结构有哪些增强点等?这些问题有助于提高计算机系统结构的水平。
有关这方面的问题,上节已很明确的写出,在此不再赘述。
微机原理-第三章ppt课件
当S=1而R=1时,输出保持
符号:为了作图方便, 用方块来表示。
.
5
改进型式:时标RS 触发器——RS 触发器外 加的时标脉冲, 如图下图 所示。 图中的CLK 即为时标脉冲。
S
&
QS Q
CLK
R&
QR Q
功能:无论是置位还是复位, 都必须在时标脉 冲端为高电位时才能进行。
.
6
3.2.2 D 触发器
基本构成:D 触发器是在RS 触发器的基础上 引伸出来的, 它只需一个输入端口, 下图 为D 触发器的原理。
D
QS Q
QR Q
功能:当D 端为高电位时, S 端为高电位,
称为置位。
当D 端为低电位时, S 端为低电位,
称为复位。
.
7
改进型式:增加两个与门就可以接受 时标脉冲CLK 的控制。
第三章 微型计算机的基本组成电路
3.1 算术逻辑单元(ALU) 3.2 触发器( Trigger ) 3.3 寄存器( Register ) 3.4 三态输出电路 3.5 总线结构 3.6 译码器、数据选择器 3.7 存储器(Memory)
.
1
3.1 算术逻辑单元( ALU)
功能: 二进制数的四则运算, 布尔代数的逻辑运算。
⋯⋯ 第七时钟后沿到 Q= 111 第八时钟后沿到 Q= 000
在第八个时钟脉冲到时, 计数器复位至0, 因 此这个计数器可以计由0 至7的数。
如8 位计数器可计由0至255 的数, 12
位计数器可计由0 至4095 的数, 16 位
则可计由0 至65535 的数。
微机原理课件ch03
MOV AX, 1C8FH MOV BYTE PTR[2A00H], 8FH MOV EAX,234H
错误例:
× MOV 2A00H, AX ; 错误!
2021/1/10
第13页
存储器寻址
• 有效地址(EA, Effective Address)
– 当操作数在内存中时,指 令的地址码(操作码)给 出所访问的内存单元的逻 辑地址。
The Intel Microprocessors
Chapter 3 Addressing modes
寻址模式
• 寻址模式
– 寻找操作数的地址(一般指源操作数) – 寻找要执行的下一条指令的地址
找数 找指令
• 三种寻址模式
– 数据寻址模式(Data - Addressing Modes) – 程序存储器寻址模式( Program Memory - Addressing Modes) – 堆栈寻址模式( Stack Memory - Addressing Modes)
MOV LIST [SI+2], CL MOV DI, SET_IT[BX] MOV DI, [EAX+10H] MOV ARRAY[EBX], EAX
2021/1/10
第19页
寄存器相对寻址(Register relative Addressing)
2021/1/10
第20页
相对基址变址寻址(base relative-plus-index addressing)
2021/1/10
第16页
基址加变址寻址(base-plus-index addressing)
• 类似于间接寻址,采用两个寄存器进行寻址 • EA经常采用几个基址寄存器(BX, BP)和一个变址寄存器
微机原理第三章习题与参考答案
第三章习题与参考答案3.1 已知 (DS) = 1000H,(ES) = 2000H,(SS) = 3000H,(SI) = 0050H,(BX) =0100H,(BP) =0200H,数据变量DISP的偏移地址为1000。
指出下列指令的寻址方式和物理地址。
(1) MOV AX,0ABH 立即寻址无(2) MOV AX,BX 寄存器寻址无(3) MOV AX,[l000H] 直接寻址 10000H(4) MOV AX,DATA 直接寻址 (DS*16+DATA )(5) MOV AX,[BX] 寄存器间接寻址 10100H(6) MOV AX,ES:[BX] 寄存器间接寻址 20100H(7) MOV AX,[BP] 寄存器间接寻址 30200H(8) MOV AX,[SI] 寄存器间接寻址 10050H(9) MOV Ax,[BX+l0] 寄存器相对寻址 1010AH(10) MOV AX,DISP[BX] 寄存器相对寻址 11100H(1l) MOV AX,[BX+SI] 基址变址寻址 10150H(12) MOV AX,DISP[BX][SI] 相对基址变址寻址 11150H3.2 分别说明下例指令采用的寻址方式和完成的操作功能。
(1) MOV CX,2000H 立即寻址将立即数2000H送CX寄存器(2) MOV DS,AX 寄存器寻址将AX寄存器内容送DS段寄存器(3) AND CH,[1000H] 直接寻址将[DS*16+1000H]单元的内容送CH寄存器(4) ADD [DI],BX 寄存器间接寻址将CL寄存器的内容送[DS*16+DI]单元(5) MOV SS:[3000H],CL 直接寻址将CL寄存器的内容送[SS*16+3000H]单元(6) SUB [BX][SI],1000H 直接寻址将立即数1000H送[DS*16+BX+SI+50H]单元(7) ADD AX,50H[BX][SI] 相对基址变址寻址将[DS*16+BX+SI+50H]单元的内容送AX寄存器(8) PUSH DS 寄存器寻址将DS寄存器的内容送[SS*16+SP]单元(9) CMP [BP][DI],AL 寄存器寻址将AL寄存器的内容送[SS*16+DI+BP]单元3.3 判断下列指令正误,如果错误请指出原因。
微机原理第3章课件
“与”指令应用例
开始 取待输出数的 偏移地址
取输入口地址
读入状态字
测试bit1位状态
N
Bit1=1?
Y
取输出口地址
输出一个字
7
“与”指令应用例
LEA SI,DATA MOV DX,3F8H WATT:IN AL,DX AND AL,02H JZ WATT MOV DX,38FH MOV AX,[SI] OUT DX,AX
49
程序控制指令
转移指令 循环控制 过程调用 中断控制
50
程序的执行方向
程序控制类指令的本质是:
控制程序的执行方向
决定程序执行方向的因素:
CS,IP
控制程序执行方向的方法:
修改CS 和IP ,则程序转向另一个代码段执行; 仅修改IP,则程序将改变当前的执行顺序,转向本
代码段内其它某处执行。
ATJAZENNSWDDTATAAATLLL,,,0222AHAHH CTJXZEMOSWPRTAAATALTLL,,,0282HAAHH JTJNENSZZT WAWLA,ATT2TT0H
JZ WATT
;ZF=1转移
MOV DX,38FH MOV AX,[SI] OUT DX,AX
17
二、移位指令
串传送指令常与无条件重复前缀连用
37
串传送指令
对比用MOV指令和MOVS指令实现将 200个字节数据从内存的一个区域送到 另一个区域的程序段。
P104例3-12
38
串传送指令例
用串传送指令实现200个字节数据的传送: LEA SI,MEM1 LEA DI,MEM2 MOV CX,200 CLD REP MOVSB HLT
34
微机原理讲义(第三章)
通用寄存器 AX、BX、CX、DX、 SI、DI、BP、SP
指令是计算机执行某种操作的命令。计算机为了 完成不同的功能而要执行不同的指令。一台计 算机能够识别和执行的全部指令称为该计算机 的指令系统或指令集。 不同的微处理器有不同的指令系统, 80X86/Pentium系列微处理器的指令集是在 8086/8088CPU指令系统上发展起来的。
第3章 80X86/Pentium 指令系统
第3章 80X86/Pentium 指令系统
• 8086/8088指令系统中对段地址有个基本 规定: • 在正常情况下,由寻址方式中有效地址 规定的基地址寄存器来确定段寄存器, 即只要寻址方式中出现BP寄存器作为基 地址,段寄存器一定采用堆栈段SS,其余 的情况都采用数据段DS。
第3章 80X86/Pentium 指令ቤተ መጻሕፍቲ ባይዱ统
第3章 80X86/Pentium 指令系统
关注以下三个方面: • 功能 • FR • 结果
第3章 80X86/Pentium 指令系统
数据传送指令
通用数据传送指令
MOV PUSH POP XCHG XLAT IN OUT
LEA LDS LES
MOV
PUSH POP XCHG XLAF IN OUT
第3章 80X86/Pentium 指令系统
设DS=1200H, BX=05A6H, BP=40A0H, SI=2000H, 位移量disp=1618H • MOV AX , [BP]
SS=5000H, DI=3000H,
EA=40A0H PA=SSx16+EA=50000H+40A0H=540A0H 执行结果: 将堆栈段540A0H和540A1H两单元的内容取出送 至AX。
微机原理第03章4
例: Jmp data[si] 如果 data=1000 SI=500 (1500)=2000 Ip=2000
1500 1501 1502 1503
2000
第3章:3.6.2 条件转移指令
条件转移指令Jcc根据指定的条件确定程序 是否发生转移。其通用格式为:
;首先CX←CX-1;然后判断;若CX≠0,转移
JCXZ label
;为0循环指令
:如果CX=0,则转移
label操作数采用相对短寻址方式 还 有 LOOPZ/LOOPE 和 LOOPNZ/LOOPNE 两 条 指令 dec cx jnz label
第3章:3.6.3 循环指令(p.78) 指令
LOOP OPRD LOOPZ / LOOPE OPRD
功能
CX-1,计数器不为零循环 CX-1,计数器不为零且相等时 循环
循环条件
CX0 CX 0且 ZF=1
LOOPNZ / LOOPNE OPRD CX-1,计数器不为零且不相等 时循环
ADD BX,0 ;增加一条指令
第3章:例3.23 判断是否为字母Y
;寄存器AL中是字母Y(含大小写),则令AH=0, 否则令AH=-1 cmp al,’y’ ;比较AL与小写字母y je next ;相等,转移 cmp al,’Y’ ;不相等, ;继续比较AL与大写字母Y je next ;相等,转移 mov ah,-1 ;不相等,令AH=-1 jmp done ;无条件转移指令 next: mov ah,0 ;相等的处理:令AH=0 done: ……
第3章:目标地址的寻址范围:段内寻址
段内转移——近转移(near)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
默认情况MASM只汇编16位8086指令集 使用80186及以后80x86新增的指令,必须使用 处理器选择伪指令 利用32位寄存器完成32位操作,必须加上.386 及以上处理器的选择伪指令 留心.386及以后的处理器选择伪指令的位置
• 在存储模式MODEL指令之后,默认采用16位段 • 在存储模式MODEL指令之前,默认采用32位段
• 段名:_DATA,可用@DATA预定义操作符表示
代码段定义伪指令.CODE创建一个代码段
• 默认段名:_TEXT,可用@CODE预定义操作符表示
钱晓捷,微型计算机原理及应用2版,清华大学出版社,2010
13
执行开始(.startup语句)
指明程序开始执行的位置 同时使DS等于用.DATA定义的数据段地址 可用两条语句代替.STARTUP语句
7
操作数与参数
处理器指令的操作数:表示参与操作的对象
• 一个具体的常量 MOV AH, 9 • 保存在寄存器的数据 • 保存在存储器中的变量 • 逗号前常是目的操作数,逗号后的常是源操作数
伪指令的参数:
• 常量、变量名、表达式等 • 可以有多个,参数之间用逗号分隔
msg db 'Hello, Assembly !',13,10, '$‘
钱晓捷,微型计算机原理及应用2版,清华大学出版社,2010
8
注释与分隔符
语句中分号后的内容是注释
• 对指令或程序进行说明 • 汇编程序不对它们做任何处理 • 注释利于以后阅读,建议养成书写注释的良好习惯
语句的4个组成部分要用分隔符分开
• 标号后的冒号 分隔符都是英文标点 • 注释前的分号 • 操作数间和参数间的逗号 • 分隔其他部分通常采用一个或多个空格或制表符 • 注释使用英文或中文均可
本书源程序文件的命名规则 • EG=例题,EX=习题 • 第1位数字=章号,后2位数字=序号
钱晓捷,微型计算机原理及应用2版,清华大学出版社,2010
24
源程序的汇编
生成目标模块文件(.OBJ) MASM 6.x的汇编程序是ML.EXE ML /c eg301.asm 带参数“/c”(小写)仅实现源程序的汇编 不带“/c”参数可以汇编和连接 ML eg301.asm
微型计算机原理及应用· 第2版
第3章 汇编语言基础
制作 钱晓捷
2010年
第3章 汇编语言基础 3.1 源程序结构
3.1.1 语句格式 3.1.2 程序格式 3.1.3 开发方法
3.2 数据表示
3.2.1 数制 3.2.2 编码 3.2.3 常量表达
3.3 变量应用
3.3.1 变量定义 3.2.2 变量属性
• 助记符:DB(取自Define Byte) • 功能:在主存中占用若干的存储空间,用于保存变
变量名MSG包含有段地址和偏移地址
• 操作符OFFSET获得偏移地址
mov dx,offset msg ;DX获得msg的偏移地址 • 操作符SEG获得段地址
钱晓捷,微型计算机原理及应用2版,清华大学出版社,2010
调 试 应用程序
错误
钱晓捷,微型计算机原理及应用,清华大学出版社,2006.2
23
源程序的编辑
源程序文件是无格式文件、纯文本类型 以ASM为扩展名,使用任何文本编辑器
• Windows的记事本Notepad • DOS中的全屏幕文本编辑器EDIT • 其他程序开发工具中的编辑环境(像Turbo C) • MASM完全版的程序员工作平台PWB中的编辑环境
子程序名 DISPMSG 入口参数 EAX=字符串地址
功能说明 显示字符串(以0结尾)
钱晓捷,微型计算机原理及应用2版,清华大学出版社,2010
21
例题3-1的完整源程序(使用子程序库)
include io.inc .model small .486 .stack .data db 'Hello, Assembly !',13,10,0 ;定义要显示的字符串 .code .startup mov eax,offset msg ;指定字符串的偏移地址 call dispmsg ;利用库中子程序显示信息 .exit end
钱晓捷,微型计算机原理及应用2版,清华大学出版社,2010
26
钱晓捷,微型计算机原理及应用2版,清华大学出版社,2010
20
输入输出子程序库(本书创作提供)
键盘输入和显示器输出的I/O子程序 含IO.INC和IO.LIB,保存在当前目录下 源程序文件开始使用包含命令声明
INCLUDE IO.INC
子程序调用方法
MOV EAX,入口参数 CALL 子程序名
标号和名字是用户自定义的标识符
钱晓捷,微型计算机原理及应用2版,清华大学出版社,2010
4
标识符(Identifier)
最多由31个字母、数字及规定的特殊符号(如 _、 $、?、@)组成,不能以数字开头 一个源程序中,用户定义的每个标识符必须唯一 不能是汇编程序采用的保留字 保留字(Reserved Word)是编程语言本身需要使用 的各种具有特定含义的标识符、也称为关键字
mov ah,4ch int 21h
功能编号 AH=4CH 入口参数 AL=DOS返回码 功能说明 结束程序执行,返回DOS
钱晓捷,微型计算机原理及应用2版,清华大学出版社,2010
15
汇编结束(end语句)
翻译源程序成目标模块的过程到此结束 源程序的最后必须有一条END语句 汇编程序不处理END指令之后的任何内容 END伪指令后面可以有一个“标号”参数
本课程在模拟DOS环境使用32位指令展开教学
钱晓捷,微型计算机原理及应用2版,清华大学出版社,2010
12
逻辑段定义
堆栈段定义伪指令.STACK创建一个堆栈段
• 段名:STACK,可用@STACK预定义操作符表示 • 默认是1KB(=1024=400H字节)空间
数据段定义伪指令.DATA创建一个数据段
钱晓捷,微型计算机原理及应用2版,清华大学出版社,2010
17
例题3-1的完整源程序
演示图
msg
.model small .486 .stack .data db 'Hello, Assembly !',13,10,'$' ;定义要显示的字符串 .code .startup mov dx,offset msg ;指定字符串的偏移地址 mov ah,9 int 21h ;利用功能调用显示信息 .exit end
温馨提示:ML.EXE的参数区别大小写
温馨提示:将源文件与汇编程序放在同一个目录
钱晓捷,微型计算机原理及应用2版,清华大学出版社,2010
25
目标文件的连接
把目标文件和库文件合成一个可执行文件 LINK eg301.obj 多个模块文件用加号“+”分隔 回车表示接受默认名,分号表示不再提示 给出EXE文件名可以替代默认名 给出MAP文件名将创建连接映像文件 LIB库文件是连接程序需要的子程序库
18
钱晓捷,微型计算机原理及应用2版,清华大学出版社,2010
DOS功能调用
MS-DOS操作系统提供给程序员的子程序 调用子程序步骤(类似高级语言调用函数)
(1)在AH寄存器中设置系统功能调用号 (2)在指定寄存器中设置入口参数 (3)中断调用指令“INT 21H”执行功能 (4)根据出口参数分析功能调用执行情况 为什么使用功能调用
钱晓捷,微型计算机原理及应用2版,清华大学出版社,2010
2
语句格式
程序由语句组成 一个语句常占一行(MASM有续行符“\”) 一个语句不超过132个字符,4个部分 执行性语句:表达处理器指令(硬指令)
标号: 硬指令助记符 操作数,操作数 ;注释
说明性语句:表达伪指令,控制汇编方式
• 助记符:MOV(取自Move) • 功能:将源操作数传送至目的操作数 • 将数字9传送到AH寄存器中的指令
mov ah,9 ;使得AH=9
钱晓捷,微型计算机原理及应用2版,清华大学出版社,2010
6
伪指令
伪指令助记符对应指示符,表达一个汇编命令 字节变量定义伪指令
量值,该变量以字节为单位存取 • 用DB定义一个字符串,使用变量名MSG msg db 'Hello, Assembly !',13,10, '$'
• 硬指令助记符 • 伪指令助记符 • 操作符 • 寄存器名 • 预定义符号
MOV DB OFFSET EAX @data
取名原则类似高级语言 但不区别大小写字母
5
钱晓捷,微型计算机原理及应用2版,清华大学出版社,2010
硬指令
演示
助记符:帮助记忆指令功能的符号 硬指令助记符对应处理器指令,表示一种操作 数据传送指令
10
钱晓捷,微型计算机原理及应用2版,清华大学出版社,2010
存储模式(Memory Model)
存储模式决定一个程序的规模,也确定进行子 程序调用、指令转移和数据访问的缺省属性 简化段定义源程序格式中,必须有.MODEL语句 .MODEL 存储模式 .MODEL语句确定了程序采用的存储模式
名字 伪指令助记符 参数,参,清华大学出版社,2010
3
标号与名字
标号:执行性语句中
• 冒号分隔 • 表示处理器指令在主存中的逻辑地址 • 指示分支、循环等程序的目的地址