ch4_2微机原理
合集下载
CH4-2--数据库原理课程PPT汇总

第四章 · CH4-2
流程控制语句
• 流程控制语句是指那些用来控制程序执行 和流程分支的语句。
• 在SQL Server中提供了流程控制语句。
控制语句 IF...ELSE GOTO WHILE CONTINUE BREAK RETURN WAITFOR
说明 条件语句 无条件转移语句 循环语句 用于重新开始下一次循环 用于退出最内层的循环
• CASE
• END
• WHEN DATEDIFF(YEAR, 出生时
• FROM 学生
间,getdate())<=20 THEN '年龄较小'
• GO
WHILE、BREAK、CONTINUE语句
WHILE语句设置重复执行SQL语句或语句块的条件。只要指定的 条件为TRUE,就重复执行语句。其语法格式为:
• BEGIN
• END
• SET @i=@i+1
• SELECT @i /* 输出结果 */
• IF @i=5
• GO
GOTO语句
GOTO语句可以使程序直接跳到指定的标有标识符的位置处继 续执行,而位于GOTO语句和标识符之间的程序将不会被 执行。在GOTO语句行,标识符后面不用跟“: ”。 GOTO语句的语法形式为:
• 可以使用BREAK和CONTINUE关键字在循环内部控制 WHILE循环中语句的执行。
• BREAK将导致无条件退出WHILE循环,执行END(循环结 束标记)后面的任何语句。语法格式:BREAK
• CONTINUE使WHILE循环重新开始执行,忽略CONTINUE 后面的任何语句。语法格式:CONTINUE
一时刻,其数据类型为DATETIME,格式为 'hh:mm:ss'。
流程控制语句
• 流程控制语句是指那些用来控制程序执行 和流程分支的语句。
• 在SQL Server中提供了流程控制语句。
控制语句 IF...ELSE GOTO WHILE CONTINUE BREAK RETURN WAITFOR
说明 条件语句 无条件转移语句 循环语句 用于重新开始下一次循环 用于退出最内层的循环
• CASE
• END
• WHEN DATEDIFF(YEAR, 出生时
• FROM 学生
间,getdate())<=20 THEN '年龄较小'
• GO
WHILE、BREAK、CONTINUE语句
WHILE语句设置重复执行SQL语句或语句块的条件。只要指定的 条件为TRUE,就重复执行语句。其语法格式为:
• BEGIN
• END
• SET @i=@i+1
• SELECT @i /* 输出结果 */
• IF @i=5
• GO
GOTO语句
GOTO语句可以使程序直接跳到指定的标有标识符的位置处继 续执行,而位于GOTO语句和标识符之间的程序将不会被 执行。在GOTO语句行,标识符后面不用跟“: ”。 GOTO语句的语法形式为:
• 可以使用BREAK和CONTINUE关键字在循环内部控制 WHILE循环中语句的执行。
• BREAK将导致无条件退出WHILE循环,执行END(循环结 束标记)后面的任何语句。语法格式:BREAK
• CONTINUE使WHILE循环重新开始执行,忽略CONTINUE 后面的任何语句。语法格式:CONTINUE
一时刻,其数据类型为DATETIME,格式为 'hh:mm:ss'。
微机原理CH4(2) 汇编语言程序设计4-5.6(ok)

第四章
汇编语言程序设计
4.1 引言 4.2 汇编语言程序格式 4.3 MASM中的表达式 4.4 伪指令语句 4.5 DOS系统功能调用 4.6 程序设计方法
1
第四章
4.5 DOS系统功能调用
一、系统功能调用
1、系统功能调用——由DOS提供的一组实现特殊功能
的子程序供程序员在程序中调用,以减轻编程工作量。 2、系统功能调用有两种:一种称为DOS系统功能调用 ,另一种称为BIOS中断调用。 3、用户程序在调用这些系统服务程序时,不是用CALL
出;第二字节存放实际输入的字符个数,由系统最后
添入;从第三个字节开始存放从键盘接收的字符,直 到ENTER键结束。 入口参数:DS:DX指向缓冲区的第一个字节。
12
第四章
例4-34 开辟一个缓冲区,从键盘输入一个字符串,将输入 的字符数→CL寄存器,并将指针指向字符串的第一个字符。 BUFF 100 BUFF DB 100 ? DB ? 00 DB 100 DUP(?) ? MOV AX,DATA ? MOV DS,AX ? MOV DX,OFFSET BUFF … MOV AH,0AH … INT 21H …. MOV BX,DX … MOV CL,[BX+1] … ADD DX,2
5
第四章
1、DOS键盘功能调用(功能见P156表4-7) 键盘上的每个键都有对应的键值,即标准的ASCII码, 通过DOS系统功能调用可读入键值到AL寄存器或存储器中。
AH 1 8 6 7
0AH
功能 键盘输入一个字符,并在屏幕上 显示,检查Ctrl-Break键 键盘输入一个字符,无回显
入口参数
出口参数 AL=字符 AL=字符
② 8号功能调用:从键盘输入字符但不回显,调用
汇编语言程序设计
4.1 引言 4.2 汇编语言程序格式 4.3 MASM中的表达式 4.4 伪指令语句 4.5 DOS系统功能调用 4.6 程序设计方法
1
第四章
4.5 DOS系统功能调用
一、系统功能调用
1、系统功能调用——由DOS提供的一组实现特殊功能
的子程序供程序员在程序中调用,以减轻编程工作量。 2、系统功能调用有两种:一种称为DOS系统功能调用 ,另一种称为BIOS中断调用。 3、用户程序在调用这些系统服务程序时,不是用CALL
出;第二字节存放实际输入的字符个数,由系统最后
添入;从第三个字节开始存放从键盘接收的字符,直 到ENTER键结束。 入口参数:DS:DX指向缓冲区的第一个字节。
12
第四章
例4-34 开辟一个缓冲区,从键盘输入一个字符串,将输入 的字符数→CL寄存器,并将指针指向字符串的第一个字符。 BUFF 100 BUFF DB 100 ? DB ? 00 DB 100 DUP(?) ? MOV AX,DATA ? MOV DS,AX ? MOV DX,OFFSET BUFF … MOV AH,0AH … INT 21H …. MOV BX,DX … MOV CL,[BX+1] … ADD DX,2
5
第四章
1、DOS键盘功能调用(功能见P156表4-7) 键盘上的每个键都有对应的键值,即标准的ASCII码, 通过DOS系统功能调用可读入键值到AL寄存器或存储器中。
AH 1 8 6 7
0AH
功能 键盘输入一个字符,并在屏幕上 显示,检查Ctrl-Break键 键盘输入一个字符,无回显
入口参数
出口参数 AL=字符 AL=字符
② 8号功能调用:从键盘输入字符但不回显,调用
ch42时分多路复用

• STDM帧的每个时隙存在额外的开销。
实例:帧长度固定的STDM
AAAAA S5
S4
时
分
AA CAC ACA
CCC S3
多 路
S2
复 用
S1
器
情况1:两条输入线路发送数据
AAAAA S5
S4 CCCC
S3 S2
EEE S1
时
分
ACA ECA ECA ECA
多
路
复
用
器
情况2:三条输入线路发送数据
• TDM:完全由数字线路实现,近几年得 到广泛应用。
• 时分复用又分为同步时分复用和异步时 分复用。
• 4.4.1 TDM原理 • 4.4.2 TDM数据复用方式
基带信号 m (t)
1
m (t) 2
m (t) n-1
m (t) n
发送端
低通滤波器 1 低通滤波器 2
m 1
′( t)
m2 ′(t)
– ③某一时间段而言,信道上传送多路复用信 号
2.同步TDM中的基本概念
• (1)帧:TDM传送信号时,将通信时间分 成一定长度的帧。每一帧又被分成若干时 间片。即一帧由若干个时间片组成。
–帧中的每个时间片是预先分配给某个数据源的, 且这种关系固定不变。不论有无数据需要发送, 所有数据源的时间片都会被占有;
AAAAA S5
S4 CCCC
S3 DDD
S2 EEE
S1
时 分 ACA
AED
DCA
多
路
复
EDC
CA E
用
器
情况3:四条输入线路发送数据
AAAAA S5
BBB S4
CCCC S3
实例:帧长度固定的STDM
AAAAA S5
S4
时
分
AA CAC ACA
CCC S3
多 路
S2
复 用
S1
器
情况1:两条输入线路发送数据
AAAAA S5
S4 CCCC
S3 S2
EEE S1
时
分
ACA ECA ECA ECA
多
路
复
用
器
情况2:三条输入线路发送数据
• TDM:完全由数字线路实现,近几年得 到广泛应用。
• 时分复用又分为同步时分复用和异步时 分复用。
• 4.4.1 TDM原理 • 4.4.2 TDM数据复用方式
基带信号 m (t)
1
m (t) 2
m (t) n-1
m (t) n
发送端
低通滤波器 1 低通滤波器 2
m 1
′( t)
m2 ′(t)
– ③某一时间段而言,信道上传送多路复用信 号
2.同步TDM中的基本概念
• (1)帧:TDM传送信号时,将通信时间分 成一定长度的帧。每一帧又被分成若干时 间片。即一帧由若干个时间片组成。
–帧中的每个时间片是预先分配给某个数据源的, 且这种关系固定不变。不论有无数据需要发送, 所有数据源的时间片都会被占有;
AAAAA S5
S4 CCCC
S3 DDD
S2 EEE
S1
时 分 ACA
AED
DCA
多
路
复
EDC
CA E
用
器
情况3:四条输入线路发送数据
AAAAA S5
BBB S4
CCCC S3
ch4-02

4.4.3 BIU与EU的动作协调原则
② 每当EU准备执行一条指令时, 它会从BIU部件的指令队列前部取出指令的代码, 然后用几个时钟周期去执行该指令。
在执行指令的过程中,
如果需要访问存储器或者I/O端口, 那么EU就会请求BIU,进入总线周期,完成访问内存或者 I/O端口的操作; ﹡如果此时BIU正好处于空闲状态,会立即响应EU的总 线请求。
1、SP堆栈指针、BP基址寄存器
堆栈是存储器中的一个特殊的数据存储: 采用“后进先出”的原则存放数据,
通常它的一端(栈底)是固定的,另一端(栈顶)是浮动的,信息 的存入和取出都只能在浮动的一端进行。
主要用来暂时保存程序运行时的一些地址或数据信息。 例如:当CPU执行调用指令时,用堆栈保存程序的返回地址 (亦称断点地址);在中断处理时,通过堆栈“保存现场”和 “恢复现场” (把断点及有关的寄存器、标志位及时正确地 保存下来)。
(2)组成 4 个段地址寄存器(CS、DS、ES、SS), 16位指令指针寄存器IP(存放下一条要执行的指令的EA), 20位的地址加法器(16d段地址+偏移地址=物理地址), 6字节(8086)或4字节(8088)的指令队列, 总线控制电路: 处理器与外界总线联系的转接电路。 包括三组总线: 20 位地址总线, 8 位双向数据总线,一组控制总线。
目的变址寄存器。
所谓变址寄存器,是指它存放的地址在串操作指令中可以按 照要求自动增加/减少。
一般与DS联用,用来确定数据段中某一存储单元的地址,
例:
MOV AX, [SI]
在串处理指令中,SI、DI作为隐含的源变址和目的变址寄 存器分别达到在数据段和附加段中寻址的目的。
感测技术--ch4-2

电流-电压特性:特性曲线 (0)~(1)为正向阻断区, 即关断; (1)~(3)为通态; (0)~(4) ~(5) 为反向区;(2)为保持点,电压 Vh 和电流 Ih 称保 持电压和保持电流; 处于通态的晶闸管,当电流小 于 Ih 时,由通态转换为断态; Vs 和 Is 是关态电压 和电流。
二、温敏晶闸管的温度特性
工作原理:当晶闸管处于正向偏置时, J1和J3正偏,J2反偏,
I C 2 I g IA很小,晶闸管处于高阻态,称断态 ;I B1 I C 2 , 形成正反馈。如果反馈回路的增益足够大,器件可以由正向阻 断状态转向正向导通状态。在正向偏置下的晶闸管,通过控制 栅极电流 Ig ,可使它由断态变为通态。可作为理想开关器件。 当晶闸管处于反向偏置时, J1和J3反偏,J2正偏, J1 几乎承 受所有的反向电压, 流过的反向电流很 小晶闸管处于反向 阻断状态。
第三节
温敏晶闸管(可控硅)
一、温敏晶闸管的工作原理
结构与等效电路:可控硅是个四层PNPN结构的三端半导体器 件,包括3个PN结J1、J2、J3,外层P1区引出阳极A,N2区引出 阴极K,N1区和P2区分别引出两个栅极G1和G2,可控硅可看作 由一个PNP和NPN晶体管组合而成,PNP集电极总是与NPN的 基区连接 在一起。
摄氏 温度 测量 电路
• 要用于测量华氏温度(符号为℉),怎么设计 华氏温度等于热力学温度减去255.4再乘以9/5,若要 求输出为1mV/℉,则调整反馈电阻约为180kW,使得温 度为0℃时,VO=17.8mV;温度为100℃时,VO=197.8mV
在图示的温控电路中,AD590、RD、R、R1 、R2 、 R3构成测温电桥,调节R2设定T0的电压。当T低于T0 时,V- <V+,V0输出高电平,T1、T2 导通,加热器 加热;当T低于T0时,V- >V+,V0输出低电平,T1、 T2 截止, 停止加热。
ch4-2 2014

module Add_half (output c_out, sum, input a, b); xor M1 (sum, a, b); and M2 (c_out, a, b); endmodule
12
Example 4.2: A 16-bit ripple-carry adder
Design hierarchy of a 16-bit ripple-carry adder
module y (…); … a M1 (…); a M2 (…); b M3 (…); c M4 (…); c M5 (…); … endmodule
3
ห้องสมุดไป่ตู้
常见的模块实例化错误
• 非法的模块嵌套定 义
module top (…); … module x (…); … endmodule module y (…); … endmodule … endmodule
A_eq_B = A1’A0’B1’B0’ + A1’A0B1’B0 + A1A0B1B0 + A1A0’B1B0’
17
Example 4.4: A 2-bit binary comparator
A_lt_B = A1’B1 + A1’A0’B0 + A0’B1B0 A_gt_B = B1’A1 + B1’B0’A0 + B0’A1A0 A_eq_B = A1’A0’B1’B0’ + A1’A0B1’B0 + A1A0B1B0 + A1A0’B1B0’
A>B
01 1 0 0 0 11 1 1 0 1 10 1 1 0 0 A1A0 B1B0 00 00 01 11 10 1 0 0 0
机电传动控制ch4_2_15.2.2 电子教案

4.2 发电机-电动机直流传动控制系统
4.2.1 系统组成及原理
系统组成:由旋转变流机组供电的直流调速系统,称发电
机一电动机直流传动控制系统,简称G-M系统。
1
4.2 发电机-电动机直流传动控制系统
4.2.1 系统组成及原理
2
4.2 发电机-电动机直流传动控制系统
4.2.2 G-M系统机械特性
G-M的机械特性方程
3
4.2 发电机-电动机直流传动控制系统
4.2.2 G-M系统机械特性
4
4.2 发电机-电动机直流传动控制系统
4.2.3 G-M系统的启动与制动
5
4.2 发电机-电动机直流传动控制系统
本节的基本要点
1)G-M调速系统的组成 2)G-M调速系统的调速方法及原理 3)G-M调速系统的机械特性方程 4)G-M调速系统的启动、调速和制动
6
Hale Waihona Puke
4.2.1 系统组成及原理
系统组成:由旋转变流机组供电的直流调速系统,称发电
机一电动机直流传动控制系统,简称G-M系统。
1
4.2 发电机-电动机直流传动控制系统
4.2.1 系统组成及原理
2
4.2 发电机-电动机直流传动控制系统
4.2.2 G-M系统机械特性
G-M的机械特性方程
3
4.2 发电机-电动机直流传动控制系统
4.2.2 G-M系统机械特性
4
4.2 发电机-电动机直流传动控制系统
4.2.3 G-M系统的启动与制动
5
4.2 发电机-电动机直流传动控制系统
本节的基本要点
1)G-M调速系统的组成 2)G-M调速系统的调速方法及原理 3)G-M调速系统的机械特性方程 4)G-M调速系统的启动、调速和制动
6
Hale Waihona Puke
微机原理CH4(2) 汇编语言程序设计共49页

xiexie! 38、我这个人走得很慢,但是我从不后退。——亚伯拉罕·林肯
39、勿问成功的秘诀为何,且尽全力做你应该做的事吧。——美华纳
40、学而不思则罔,思而不学则殆。——孔子
微机原理CH4(2) 汇编语言程序设计
36、“不可能”这个字(法语是一个字 ),只 在愚人 的字典 中找得 到。--拿 破仑。 37、不要生气要争气,不要看破要突 破,不 要嫉妒 要欣赏 ,不要 托延要 积极, 不要心 动要行 动。 38、勤奋,机会,乐观是成功的三要 素。(注 意:传 统观念 认为勤 奋和机 会是成 功的要 素,但 是经过 统计学 和成功 人士的 分析得 出,乐 观是成 功的第 三要素 。
39、没有不老的誓言,没有不变的承 诺,踏 上旅途 ,义无 反顾。 40、对时间的价值没有没有深切认识 的人, 决不会 坚韧勤 勉。
谢谢!
36、自己的鞋子,自己知道紧在哪里。——西班牙
37、我们唯一不会改正的缺点是软弱。——拉罗什福科
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
汇编格式:LDS 16位寄存器名,存储器寻址方式 执行的操作:将寻址到的存储单元的第一个源操作数(字) 送16位寄存器,第二个源操作数(字)送DS寄存器。 说明:① 本条指令中的16位寄存器不允许是段寄存器。
② 本条指令不影响标志位。
10
例
LDS
AX,TABLE[SI]
假设(20050H)=12345678H,指令执行前,如果 (AX)=0000H,(DS)=2000H,TABLE=20020H,(SI)=0030H, 则物理地址=20020+0030H=20050H;指令执行后, (AX)=5678H,(DS)=1234H。
元/寄存器
4
MOV指令使用规则:
1)CS,IP不能作目的寄存器 2) 不允许mem←mem 3) 不允许segreg←segreg 4) 立即数不允许作为目的操作数 5) 不允许segreg←立即数 6) 源操作数与目的操作数类型要一致 7)不影响标志位
5
(2)交换指令XCHG
格式:XCHG reg,mem/reg 功能:交换两操作数的内容。 要求:两操作数中必须有一个在寄存器中; 操作数不能为段寄存器和立即数; 源和目地操作数类型要一致。 举例: XCHG AX,BX XCHG [2000],CL
执行后 (BX)=1020
高地址
POP BX指令执行示意图
20
堆栈指令使用时应注意几点:
①堆栈操作总是按字进行 ②不能从栈顶弹出一个字给CS ③堆栈指针为SS:SP,SP永远指向栈顶 ④SP自动进行增减量(-2,+2)
21
(5)字节-字转换指令
格式:CBW ;把AL的符号位复制到AH CWD ;把AX的符号位复制到DX 用途:用于有符号数的除法。 例如:(AL) = A7H,则执行CBW后,AH的内 容为FFH。
29
IP’ IP’(下) 继子 续程 执序 行1
(a)
子程序调用示意图
(b)
(a) 主程序调子程序; (b) 子程序嵌套示意图
14
规定由SS指示堆栈段的段基址,堆栈指针SP 始终指向堆栈的顶部,SP的初值规定了所用 堆栈区的大小。堆栈的最高地址叫栈底。
SS
进栈方向
栈顶 SP
退栈方向
堆栈段
栈底
15
① 压栈指令 PUSH src
27
BUFFER1
ACH F8H 56H
被 加 数 数 据 段
2CH
BUFFER2
BEH 47H 9EH 30H
加 数
...
多字节加法示意图
28
程序段如下: MOV AX,BUFFER2 ADD BUFFER1,AX ;低字相加 MOV AX,BUFFER2+2 ADC BUFFER1+2 ,AX ;高字相加, ;包括低字的进位
2
1.通用传送指令
(1) MOV dest,src; dest←src
传送的是字节还是字取决于指令中涉及的操作 数是8位还是16位。 具体来说可实现: ① MOV mem/reg1,mem/reg2 指令中两操作数中至少有一个为寄存器 例: MOV CL,DL MOV AX,BX MOV [SI],CX MOV CL,[BX+5]
8
下面两条指令等效: LEA BX,BUFFER MOV BX, OFFSET BUFFER 其中OFFSET BUFFER表示存储器单元BUFFER 的偏移地址。 二者都可用于取存储器单元的偏移地址,但 LEA指令可以取动态的地址,OFFSET只能取 静态的地址。
9
LDS指针送指定寄存器和DS寄存器指令
; src为16位操作数
例:PUSH AX ;将AX内容压栈 执行操作:(SP)+1←高字节AH (SP)←低字节AL (SP)←(SP)- 2
16
设(AX)=1020H,执行示意图如图 2-8
低地址
存储区
低地址
存储区
(SS段)
(SS段)
(SP)-2 (SP)-1 (SP) (SP)
20
10
(AL) (AH)
进栈方向
高地址
执行前
高地址
执行后
(AX)=1020
PUSH AX指令执行示意图
17
注意进栈方向是高地址向低地址发展。
压栈指令的格式为: PUSH reg PUSH mem/reg PUSH segreg 例如: PUSH AX PUSH [BX] PUSH DS
18
② 弹出指令 POP dest
11
3) LES指针送指定寄存器和ES寄存器指令 汇编格式:LES 16位寄存器名,存储器寻址方式 执行的操作:将寻址到的存储单元的第一个源操作数(字) 送16位寄存器,第二个源操作数(字)送ES寄存器。
说明:
① 16位寄存器不允许是段寄存器。 ② 本条指令不影响标志位。
12
(3) 堆栈操作指令
26
ADC指令用于多字节加法运算中
例:有两个4字节的无符号数相加: 2C56F8ACH+309E47BEH=? 设被加数、加数分别存放在BUFFER1及 BUFFER2开始的两个存储区内,结果放回 BUFFER1存储区。(见下页图) 因CPU只能进行8位或16位的加法运算, 为此可将两数分成低字和高字分别相加。
什么是堆栈? 按“后进先出(LIFO)”方式工作的存储区域。 堆栈以字为单位进行压入弹出操作。 为什么要设置堆栈? 为什么要按 “后进先出”方式工作? 参见下图
13
主程序
主程序
执行子 程序1 执 行 子 程 序 执 行 子 程 序 2
IP IP(下) 继主 续程 执序 行
IP IP(下) 继主 续程 执序 行
6
(3). 地址传送指令
用途:用于传送操作数的地址
传送偏移地址
格式:LEA reg,mem ; 将指定内存单元的偏移地址 送到指定寄存器 ; DS:reg←(mem开始的四个内
传送地址指针
格式:LDS reg, mem32 存
单元的内容) LES reg, mem32 ; 同上,但DS改为ES 要求: 1) 源操作数必须是一个存储器操作数; 2) 目的操作数必须是一个16位的通用寄存器。
22
3.3.2 算术运算指令 1.加法指令 2.减法指令 3.乘法指令 4.除法指令
23
1.加法指令
(1) 不带进位的加法指令ADD
格式: ADD acc,data ADD mem/reg,data ADD mem/reg1,mem/reg2
实例:
ADD ADD ADD ADD
AL,30H SI,[BX+20H] CX,SI [DI],200H
结果:C=1, Z=0, P=0, A=1, O=1, S=0
25
(2) 带进位位的加法指令ADC
ADC指令在形式上和功能上与ADD类似, 只是相加时还要包括进位标志CF的内容, 例如: ADC AL,68H ;AL←(AL)+68H+(CF) ADC AX,CX ;AX←(AX)+(CX)+(CF) ADC BX,[DI] ;BX←(BX)+[DI+1][DI] +(CF)
3
② ③ ④ ⑤ ⑥
MOV MOV MOV MOV MOV
reg,data ;立即数送寄存器 mem,data ;立即数送存储单元 acc,mem ;存储单元送累加器 mem,acc ;累加器送存储单元 segreg,mem/reg ;存OV mem/reg,segreg ;段寄存器送存储单
例:POP BX ;将栈顶内容弹至BX 执行操作:(BL)←(SP) (BH)←(SP)+1 (SP)←(SP)+2
19
POP BX 的执行示意图如下图所示
存储区 (SS段) 低地址 20 10 (SP) 出栈方向 10 执行前
高地址
存储区 (SS段)
低地址
(SP)
(SP)+1 (SP)+2
20
BX
7
例:LEA BX,[SI+10H] 设:(SI)=1000H 则执行该指令后,(BX)=1010H
注意以下二条指令差别: LEA BX,BUFFER MOV BX,BUFFER 前者表示将符号地址为BUFFER的存储单元的 偏移地址取到 BX中;后者表示将BUFFER存储 单元中的内容取到 BX中.
3.3 8086/8088指令系统
可分成如下7类: 数据传送指令 算术运算指令 逻辑运算和移位指令 串操作指令 程序控制指令 处理器控制指令
1
3.3.1 数据传送指令
可实现 存储器 寄存器 I/O
数据传送指令又可分为如下五种: 通用传送 交换指令 地址传送 堆栈指令 字节、字转换指令
24
• ADD指令对6个状态标志均产生影响。
例:已知(BX)=D75FH 指令 ADD BX,8046H 执行后,状态标志各 是多少? D75FH = 1110 0111 0101 1111 8046H = 1000 0000 0100 0110 1 1 11 11 0110 0111 1010 0101
② 本条指令不影响标志位。
10
例
LDS
AX,TABLE[SI]
假设(20050H)=12345678H,指令执行前,如果 (AX)=0000H,(DS)=2000H,TABLE=20020H,(SI)=0030H, 则物理地址=20020+0030H=20050H;指令执行后, (AX)=5678H,(DS)=1234H。
元/寄存器
4
MOV指令使用规则:
1)CS,IP不能作目的寄存器 2) 不允许mem←mem 3) 不允许segreg←segreg 4) 立即数不允许作为目的操作数 5) 不允许segreg←立即数 6) 源操作数与目的操作数类型要一致 7)不影响标志位
5
(2)交换指令XCHG
格式:XCHG reg,mem/reg 功能:交换两操作数的内容。 要求:两操作数中必须有一个在寄存器中; 操作数不能为段寄存器和立即数; 源和目地操作数类型要一致。 举例: XCHG AX,BX XCHG [2000],CL
执行后 (BX)=1020
高地址
POP BX指令执行示意图
20
堆栈指令使用时应注意几点:
①堆栈操作总是按字进行 ②不能从栈顶弹出一个字给CS ③堆栈指针为SS:SP,SP永远指向栈顶 ④SP自动进行增减量(-2,+2)
21
(5)字节-字转换指令
格式:CBW ;把AL的符号位复制到AH CWD ;把AX的符号位复制到DX 用途:用于有符号数的除法。 例如:(AL) = A7H,则执行CBW后,AH的内 容为FFH。
29
IP’ IP’(下) 继子 续程 执序 行1
(a)
子程序调用示意图
(b)
(a) 主程序调子程序; (b) 子程序嵌套示意图
14
规定由SS指示堆栈段的段基址,堆栈指针SP 始终指向堆栈的顶部,SP的初值规定了所用 堆栈区的大小。堆栈的最高地址叫栈底。
SS
进栈方向
栈顶 SP
退栈方向
堆栈段
栈底
15
① 压栈指令 PUSH src
27
BUFFER1
ACH F8H 56H
被 加 数 数 据 段
2CH
BUFFER2
BEH 47H 9EH 30H
加 数
...
多字节加法示意图
28
程序段如下: MOV AX,BUFFER2 ADD BUFFER1,AX ;低字相加 MOV AX,BUFFER2+2 ADC BUFFER1+2 ,AX ;高字相加, ;包括低字的进位
2
1.通用传送指令
(1) MOV dest,src; dest←src
传送的是字节还是字取决于指令中涉及的操作 数是8位还是16位。 具体来说可实现: ① MOV mem/reg1,mem/reg2 指令中两操作数中至少有一个为寄存器 例: MOV CL,DL MOV AX,BX MOV [SI],CX MOV CL,[BX+5]
8
下面两条指令等效: LEA BX,BUFFER MOV BX, OFFSET BUFFER 其中OFFSET BUFFER表示存储器单元BUFFER 的偏移地址。 二者都可用于取存储器单元的偏移地址,但 LEA指令可以取动态的地址,OFFSET只能取 静态的地址。
9
LDS指针送指定寄存器和DS寄存器指令
; src为16位操作数
例:PUSH AX ;将AX内容压栈 执行操作:(SP)+1←高字节AH (SP)←低字节AL (SP)←(SP)- 2
16
设(AX)=1020H,执行示意图如图 2-8
低地址
存储区
低地址
存储区
(SS段)
(SS段)
(SP)-2 (SP)-1 (SP) (SP)
20
10
(AL) (AH)
进栈方向
高地址
执行前
高地址
执行后
(AX)=1020
PUSH AX指令执行示意图
17
注意进栈方向是高地址向低地址发展。
压栈指令的格式为: PUSH reg PUSH mem/reg PUSH segreg 例如: PUSH AX PUSH [BX] PUSH DS
18
② 弹出指令 POP dest
11
3) LES指针送指定寄存器和ES寄存器指令 汇编格式:LES 16位寄存器名,存储器寻址方式 执行的操作:将寻址到的存储单元的第一个源操作数(字) 送16位寄存器,第二个源操作数(字)送ES寄存器。
说明:
① 16位寄存器不允许是段寄存器。 ② 本条指令不影响标志位。
12
(3) 堆栈操作指令
26
ADC指令用于多字节加法运算中
例:有两个4字节的无符号数相加: 2C56F8ACH+309E47BEH=? 设被加数、加数分别存放在BUFFER1及 BUFFER2开始的两个存储区内,结果放回 BUFFER1存储区。(见下页图) 因CPU只能进行8位或16位的加法运算, 为此可将两数分成低字和高字分别相加。
什么是堆栈? 按“后进先出(LIFO)”方式工作的存储区域。 堆栈以字为单位进行压入弹出操作。 为什么要设置堆栈? 为什么要按 “后进先出”方式工作? 参见下图
13
主程序
主程序
执行子 程序1 执 行 子 程 序 执 行 子 程 序 2
IP IP(下) 继主 续程 执序 行
IP IP(下) 继主 续程 执序 行
6
(3). 地址传送指令
用途:用于传送操作数的地址
传送偏移地址
格式:LEA reg,mem ; 将指定内存单元的偏移地址 送到指定寄存器 ; DS:reg←(mem开始的四个内
传送地址指针
格式:LDS reg, mem32 存
单元的内容) LES reg, mem32 ; 同上,但DS改为ES 要求: 1) 源操作数必须是一个存储器操作数; 2) 目的操作数必须是一个16位的通用寄存器。
22
3.3.2 算术运算指令 1.加法指令 2.减法指令 3.乘法指令 4.除法指令
23
1.加法指令
(1) 不带进位的加法指令ADD
格式: ADD acc,data ADD mem/reg,data ADD mem/reg1,mem/reg2
实例:
ADD ADD ADD ADD
AL,30H SI,[BX+20H] CX,SI [DI],200H
结果:C=1, Z=0, P=0, A=1, O=1, S=0
25
(2) 带进位位的加法指令ADC
ADC指令在形式上和功能上与ADD类似, 只是相加时还要包括进位标志CF的内容, 例如: ADC AL,68H ;AL←(AL)+68H+(CF) ADC AX,CX ;AX←(AX)+(CX)+(CF) ADC BX,[DI] ;BX←(BX)+[DI+1][DI] +(CF)
3
② ③ ④ ⑤ ⑥
MOV MOV MOV MOV MOV
reg,data ;立即数送寄存器 mem,data ;立即数送存储单元 acc,mem ;存储单元送累加器 mem,acc ;累加器送存储单元 segreg,mem/reg ;存OV mem/reg,segreg ;段寄存器送存储单
例:POP BX ;将栈顶内容弹至BX 执行操作:(BL)←(SP) (BH)←(SP)+1 (SP)←(SP)+2
19
POP BX 的执行示意图如下图所示
存储区 (SS段) 低地址 20 10 (SP) 出栈方向 10 执行前
高地址
存储区 (SS段)
低地址
(SP)
(SP)+1 (SP)+2
20
BX
7
例:LEA BX,[SI+10H] 设:(SI)=1000H 则执行该指令后,(BX)=1010H
注意以下二条指令差别: LEA BX,BUFFER MOV BX,BUFFER 前者表示将符号地址为BUFFER的存储单元的 偏移地址取到 BX中;后者表示将BUFFER存储 单元中的内容取到 BX中.
3.3 8086/8088指令系统
可分成如下7类: 数据传送指令 算术运算指令 逻辑运算和移位指令 串操作指令 程序控制指令 处理器控制指令
1
3.3.1 数据传送指令
可实现 存储器 寄存器 I/O
数据传送指令又可分为如下五种: 通用传送 交换指令 地址传送 堆栈指令 字节、字转换指令
24
• ADD指令对6个状态标志均产生影响。
例:已知(BX)=D75FH 指令 ADD BX,8046H 执行后,状态标志各 是多少? D75FH = 1110 0111 0101 1111 8046H = 1000 0000 0100 0110 1 1 11 11 0110 0111 1010 0101