数据库系统概论

Similar documents
数据库系统概论

,768 32,767 32K JMP Jnnn (386+) LOOP CALL [Label:] JMP short/near/far address L10: jmp jmp L20: L10 L20

3.3.2 算术运算指令 数据类型 : 无符号和有符号整数 无符号数又分成 : 无符号二进制数 ; 无符号压缩十进制 :1 字节表示 2 个十进制数 ; 无符号非压缩十进制 :1 字节表示 1 个十进制数 有符号数 : 有符号二进制数 用补码表示 2015 年 3 月 26 日星期四 11 时 3

数据库系统概论

Microsoft PowerPoint - C15_LECTURE_NOTE_05.ppt

Microsoft Word - em78 sub program.doc

Microsoft PowerPoint - C15_LECTURE_NOTE_05.ppt

幻灯片 1

数据库系统概论

Microsoft PowerPoint - 微原-第3章2.ppt [兼容模式]

《微型计算机原理》

組譯與連結(Ver6

Microsoft PowerPoint - C15_LECTURE_NOTE_06

Microsoft PowerPoint - C15_LECTURE_NOTE_06


Microsoft PowerPoint - Ch3-8086CPU指令系统(2)-寻址.pptx

微型计算机原理及应用试题 机电96

主要内容 指令系统的一般概念 指令操作方式操作码的含义指令对操作数的要求指令执行的结果 寻址方式 指令说明 2015 年 3 月 16 日星期一 8 时 2 分 37 秒 2

指令系统 可分成如下 6 类 : 数据传送指令 算术运算指令 逻辑运算和移位指令 串操作指令 程序控制指令 处理器控制指令 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 2

<4D F736F F D20C7B6C8EBCABDCFB5CDB3C9E8BCC6CAA6B0B8C0FDB5BCD1A75FD1F9D5C22E646F63>

幻灯片 1

untitled

微机第02章1(指令寻址)

Microsoft PowerPoint - Ch3-8086CPUæ„⁄令系ç»�(3)-æŁ°æ“®ä¼€é•†æ„⁄令

Microsoft PowerPoint - 微原-第3章3.ppt [兼容模式]

第4章 80X86指令系统

<4D F736F F F696E74202D D D6B8C1EECFB5CDB DC6E4CBFBD6B8C1EE2E BBCE6C8DDC4A3CABD5D>

Microsoft PowerPoint - 05-第五讲-寻址方式.pptx


学习MSP430单片机推荐参考书

<4D F736F F D20B5DAC8FDCBC4D5C2D7F7D2B5B4F0B0B82E646F63>

bingdian001.com

第5章:汇编语言程序设计

2006年国家公务员招录考试行测真题(A)

(2) Function 0BH: Function 0CH: (pixel, picture element) Function 0DH: Function 0FH: Function 13H:

微机系统与接口--第2章 ppt

MSP430ϵÁе¥Æ¬»úµÄÖ¸Áîϵͳ.pps [¼æÈÝģʽ]

M8Rxxx 指令集说明 Version 年 11 月 上海磐芯电子有限公司 SHANGHAI MASSES ELECTRONIC Co., Ltd. 本公司保留对产品在可靠性, 功能和设计方面的改进作进一步说明的权利 说明文档的更改, 恕不另行通知

1. 介绍 义隆 8 位单片机指令介绍 Application Notes 义隆 8 位单片机指令介绍 EM78/EM88 系列是基于 RISC 的精简指令微控制器, 每条指令是 13 位 15 位, 除 LCALL LJMP MOV R2,A ADD R2,A 改变 PC 指针的指令是 2 个指令

.., + +, +, +, +, +, +,! # # % ( % ( / 0!% ( %! %! % # (!) %!%! # (!!# % ) # (!! # )! % +,! ) ) &.. 1. # % 1 ) 2 % 2 1 #% %! ( & # +! %, %. #( # ( 1 (

# % & ) ) & + %,!# & + #. / / & ) 0 / 1! 2

3.3.3 逻辑运算和移位指令 1. 逻辑运算指令 运算规则 : 按位操作, 无进 / 借位 对标志位的影响 ( 除 NOT 指令外 ): CF OF SF ZF PF AF 0 0 u 根据运算结果设置 2015 年 3 月 30 日星期一 7 时 57 分 24 秒 2

第四章 8086汇编语言程序设计

本次习题课中提到的 课本, 均指机械工业出版社的 Intel 微处理器 ( 原书第八版 ) 中文版, 使用其他版本课本的同学需要自己对应

Microsoft PowerPoint - CH2_1.ppt [兼容模式]

Introduction to Computer Systems /18-243, spring st Lecture, Jan. 12th

Microsoft PowerPoint - CH2_1.ppt [兼容模式]

Microsoft Word - Ö¸Á.doc

66 微型计算机原理与接口技术 ( 第二版 ) 2. 指令格式计算机中的汇编指令由操作码字段和操作数字段两部分组成 (1) 操作码字段 操作码表示计算机要执行的某种指令功能, 由它来规定指令的操作类型, 说明计算机要执行的具体操作, 例如传送 运算 移位 跳转等操作 同时还指出操作数的类型 操作数的

一、填空题

<4D F736F F D C4EAC6D5CDA8B8DFB5C8D1A7D0A3D5D0C9FAC8ABB9FACDB3D2BBBFBCCAD4CEC4BFC6D7DBBACDCAD4BEEDBCB0B4F0B0B82DD6D8C7ECBEED2E646F63>

习 题 一

计算概论A B03 C++语言的基本成分 - 运算成分(2)

<4D F736F F D C4EAB9FABCD2B9ABCEF1D4B1D0D0D5FEC4DCC1A6B2E2D1E9A3A841C0E0A3A92E646F63>

数 学 高 分 的 展 望 一 管 理 类 联 考 分 析 第 一 篇 大 纲 解 析 篇 编 写 : 孙 华 明 1 综 合 能 力 考 试 时 间 :014 年 1 月 4 日 上 午 8:30~11:30 分 值 分 配 : 数 学 :75 分 逻 辑 :60 分 作 文 :65 分 ; 总

!"# $% & $%%% ( ")*+,-./00-(11.-. $%! $ " # $ % & ( - ) +%23!"# $%%% %,.%,!" $%.! 1.% & /$ 3(,. ( /0% $%%% ( $%%% ( 3 5 /6%%%! ")*+,-./00-(11

!! "!! "! "!! "! "! "!!#$% & ()*+, -./!000$ 1-2$##0! 3

一、单选题(本大题共15小题,每小题1分,共15分)

1 2 / 3 1 A (2-1) (2-2) A4 6 A4 7 A4 8 A4 9 A ( () 4 A4, A4 7 ) 1 (2-1) (2-2) ()

4 / ( / / 5 / / ( / 6 ( / / / 3 ( 4 ( ( 2

101

%! # # % % & # ( ) ( +, & +, +, & +, & +, +, &!

# ( + + # + # 6 +,! + # +! +, + # ( + ) ( + ( + ) + 7! + # + /8 + ) ( +! + #. + ( +, +! + # + # + + ( ! ( + ) ( + ) +, + ( + 9% +! +, + ( +

Ps22Pdf

Microsoft Word - 作业2008.doc

,,,,,,,,,,,,, :,, ;,,,,, ( ),,,, : ( ) ; ( ) ; ( ) ( ) ; ( ) ( A ) ; ( ) ( ),,,,,,, 80

CH559指令周期.doc

99 cjt h 7. 0 (8 ) 0 () abc a b c abc0 aaa 0 a () bca abc0 aa0 a0 0 a0 abc a789 a b c (8 ) 9!

30% 2

<4D F736F F D20C1E3B5E3CFC2D4D8C4A3B0E52E646F63>

B3C1

Microsoft Word - 鄂卫办函[2009]64号.doc

全宋词1

& ((& ) ((

微机第02章1(指令寻址)



6寸PDF生成工具


(Microsoft Word - \246D\252k\267\247\255n_\275\306\277\357_.docx)

FX PLC 8, : PLC FX PLC PLC PLC FXGP SFC PLC FX2 PLC PLC PLC PLC,,,, PLC,, : ,,,, ;,, ( CIP) PLC ( FX )/. :,

中 公 金 融 人 简 介... 2 一 中 国 农 业 银 行 风 貌 介 绍... 3 二 中 国 农 业 银 行 秋 季 招 聘 政 策 解 读 三 2014 农 业 银 行 秋 季 校 园 招 聘 笔 试 备 考 策 略 中 公 金 融 人 精 品 课 程 介 绍..

Microsoft PowerPoint - chx03_org08_Mul&shift

(譯本)

上 海 农 商 银 行 理 财 产 品 风 险 揭 示 书 理 财 资 金, 则 客 户 面 临 产 品 期 限 延 期 调 整 等 风 险 8. 信 息 传 递 风 险 : 上 海 农 商 银 行 将 按 照 本 说 明 书 有 关 信 息 公 告 的 约 定, 进 行 产 品 信 息 披 露 客

<4D F736F F D20CEA2BBFAD4ADC0EDC8EDBCFECAB5D1E9D6B8B5BCCAE92E646F63>

. v dx v d () () l s dl s d (_) d () v s v s () a dv a d (_) ( ) ( ) x- = v- = = v 0 = m/s a = = m/s 2 a- = ( ) x- v- a- Page 2 of 20

untitled

教材 微型计算机与接口技术 ( 第二版 ) 科学出版社楼顺天, 周佳社, 张伟涛编著

山东2014第四季新教材《会计基础》冲刺卷第二套

PowerPoint Presentation

共同构成 16 位数据存储单元的地址 当 CPL=1 时, 将堆栈指针 SP 的 16 位地址 与指令中的 7 位地址相加, 形成 16 位的数据存储器地址 (2) 当 SP=0100h, 偏移地址为 50h 时, 寻址 0150h 单元 ; 当 DP=2, 偏移地址为 50h 时, 寻址 0150

16. 小 雄 在 實 驗 室 中 想 要 稀 釋 濃 硫 酸, 下 列 操 作 方 法 何 者 最 安 全?(ch0) 17. 測 量 四 個 金 屬 球 的 體 積 和 質 量, 結 果 如 下 表, 請 問 何 者 的 材 質 最 可 能 和 其 他 三 者 不 同? (A) 甲 (B) 乙

Microsoft Word - 7E.doc





Transcription:

2. 减法指令 8086/8088 共有 5 条减法指令 1 不带 CF 的减法指令 (SUB) 格式 :SUB DST, SRC 功能 :(1)DST (DST)-(SRC) (2) 根据差设置 6 个状态标志

2 带 CF 的减法指令 (SBB) 格式 :SBB DST, SRC 功能 : (1)DST (DST)-(SRC)-CF (2) 根据差设置 6 个状态标志

3 减 1 指令 (DEC) 格式 :DEC DST 功能 : (1)DST (DST)-1, (2) 根据差设置除 CF 以外的 6 个状态标志, 对 CF 无影响

4 取负指令 (NEG) 格式 :NEG DST 功能 : DST 0-(DST), NEG 指令完成的是特殊的减法操作, 它的被减数一定为零, 因此它是一条单操作数指令

实际它是将目的操作数的值取负 若操作数的原值为一正数, 那么, 执行该指令后, 其值变为该数的负数的补码 ; 而若操作数的原值为一负数 ( 补码表示 ), 那么, 执行该指令后, 其值变为该数所对应的正数 该指令将正常影响各标志位, 并且 CF 表示最高位产生的借位 指令中的目的操作数可以采用除立即数以外的各种寻址方式

例 1: 若 (AL)=03H, 则 CPU 执行 NEG AL 指令后, (AL)=0FDH -3 的补码 ` ` ` ` 0 0 0 0 0 0 0 0 B - 0 0 0 0 0 0 1 1 B [1]1 1 1 1 1 1 0 1 B 结果为 -3 的补码 AF=1 PF=0 ZF=0 SF=1 CF=1 OF=0

若 (AL)=0FDH, 则 CPU 执行 NEG AL 指令后, (AL)=03H - +3 的补码 ` ` ` ` 0 0 0 0 0 0 0 0 B 1 1 1 1 1 1 0 1 B [1]0 0 0 0 0 0 1 1 B 结果为 +3 的原码 ( 补码 ) 应用场合 : 常常用于求某数的绝对值的场合

5 比较指令 (CMP) 格式 :CMP DST,SRC 功能 : (1)(DST) (DST) 根据差设置 6 个状态标志位

与减法指令不同的是所产生的两数之差并不取代目的操作数, 因而指令执行后, 仅仅改变了标志寄存器的内容, 两操作数的值保持不变

应用场合 : 两操作数参加比较, 根据比较结果确定两操作数之间的关系 ( 如等于 大于 小于等 ) 在分支程序设计中, 用来产生条件, 其后往往紧跟的是一条条件转移指令

如 : CMP DST,SRC Y P2 条件满足吗? N P1 条件有 ZF SF CF OF PF

程序中的表现形式为 : CMP AL,0 JZ L1 L1:

在此, 结合 CMP 指令的应用, 简 要介绍一下 8086 指令系统中的条件 转移指令 ( 见教材 P109-111)

例. 有两数 Α 和 Β, 则 CPU 执行下列指令组 MOV AL,Α CMP AL,Β ;(AL) Β, 根据差 ; 设置 6 个状态标志 后, 要实现条件转移, 根据不同的条件, 有不同的条件转移指令

根据单个条件标志实现转移 ZF SF 1, JZ/JE 标号 测试条件 :ZF=1 0,JNZ/JNE 标号 测试条件 :ZF=0 1, JS 标号 测试条件 :SF=1 0, JNS 标号 测试条件 :SF=1

OF PF CF 1, JO 标号 测试条件 :OF=1 0, JNO 标号 测试条件 :OF=1 1, JP 标号 测试条件 :PF=1 0, JNP 标号 测试条件 :PF=1 1, JC 标号 测试条件 :CF=1 0, JNC 标号 测试条件 :CF=1

若 Α Β 为两个无符号数, 根据比较结果实现转移 Α=Β JE/JZ 标号 测试条件 : ZF=1 Α 低于 Β( 或 Α 不高于或不等于 Β) JB/JC/JNAE 标号测试条件 : CF=1

Α 不低于 Β( 或高于或等于 ) JNB/JAE/JNC 标号测试条件 :CF=0 Α 高于 Β( 或不低于或不等于 ) JA/JNBE 标号测试条件 :CF ZF=0 Α 不高于 Β( 或低于或等于 ) JNA/JBE 标号测试条件 :CF ZF=1

若 Α Β 为两个带符号数, 根据比较结果实现转移 Α=Β JE/JZ 标号 测试条件 : ZF=1 Α 小于 Β( 或 Α 不大于或不等于 Β) JL/JNGE 标号测试条件 :SF OF=1

Α 不小于 Β( 大于或等于 ) JNL/JGE 标号测试条件 :SF OF=0 Α 大于 Β( 不小于或不等于 ) JG/JNLE 标号测试条件 :(SF OF) ZF=0 Α 不大于 Β( 小于或等于 ) JNG/JLE 标号测试条件 :(SF OF) ZF=1

测试 CX 的值为 0 则转移 JCXZ 标号 测试条件 : (CX)=0 下面举例说明比较指令 (CMP) 和条件转移指令的用法

例 1. 设在存储器 BUFFER 单元存放着一个字节的带符号数 X, 求 X 的绝对值, 并将结果放回原处 (P111 例 4.3.3) 算法 : X = X,; 当 X 0 时 -X,; 当 X<0 时

流程图 : AL (BUFFER) Y X 0? N 求负 (BUFFER) (AL) 程序 : MOV AL,BUFFER CMP AL,0 JNS NONEG NEG AL NONEG:MOV BUFFER,AL

例 2: 符号函数的处理 有一符号函数 : Y= 1, 当 X>0 时 (-128 X +127) 0, 当 X=0 时 -1, 当 X<0 时 设给定值 X 存放在 XX 单元, 函数 Y 值 存放到 YY 单元

流程图 : 程序 : (AL)=0? N AL 1 Y Y AL (XX) (AL) 0? N (AL) -1 (YY) (AL) MOV AL,XX CMP AL,0 JGE BIGR MOV AL,-1 JMP EQUL BIGR:JE EQUL MOV AL,1 EQUL:MOV YY,AL

3. 乘法指令 (MUL/IMUL) 乘法指令分带符号运算和不带符号运算两种 带符号运算时, 操作数和结果均以补码表示, 结果的符号按一般的运算规则确定 无符号数乘法指令 (MUL) 格式 :MUL SRC 不能为立即数

功能 : DST( 被乘数 ) SRC( 乘数 ) 字节乘 : AX 积 (AL) * (SRC) 字乘 : DX:AX 积 (AX) * (SRC) 操作类型 : 用 SRC 的类型确定 乘法指令只影响 CF 和 OF 标志, 其余标志均无意义

其中, CF=0 OF=0 CF=1 OF=1 表明结果的高位字节 ( 或字 ) 为全 0 表明结果的高位字节 ( 或字 ) 有有效积

带符号数乘法指令 (IMUL) 格式 :IMUL SRC 不能为立即数

功能 : DST( 被乘数 ) SRC( 乘数 ) 字节乘 : AX 积 (AL) * (SRC) 字乘 : DX:AX 积 (AX) * (SRC) 操作类型 : 用 SRC 的类型确定 乘法指令只影响 CF 和 OF 标志, 其余标志均无意义

其中, CF=0 OF=0 CF=1 OF=1 表明结果的高位字节 ( 或字 ) 仅仅是低位字节 ( 或字 ) 的符号扩展 表明结果的高位字节 ( 或字 ) 有效积

总之, 乘法指令中的目的操作数一定为 AL(8 位数相乘 ) 或 AX (16 位数相乘 ), 源操作数不能为立即数, 但可采用其它寻址方式, 指令对字节运算还是字运算由源操作数的类型确定

例 1. 下列指令是合法的 MUL CX ;(DX:AX) (AX)*(CX), 为字操作 IMUL CL ;(AX) (AL)*(CL), 为字节操作下列指令是非法的 MUL AL,BL 〤 DST( 被乘数 ) 应为隐含寻址 IMUL 05H 〤 SRC( 乘数 ) 不能为立即数寻址

例 2. 若 (AL)=05H,(BL)=0FDH 则 CPU 执行 : MUL BL ; 无符号数乘法 ;(AL)*(BL) 积 AX ; (AX)=04F1H

则 CPU 执行 : IMUL BL ; 带符号数乘法 ;(AL)*(BL) 积 AX ; 05H*0FDH=0FFF1H [-3] 补 ; (AX)=0FFF1H ( 即 [-15] ) 补

除法指令 4. 除法指令 (DIV/IDIV) 除法指令和乘法指令一样, 分无符号除法和带符号除法 操作类型有字节除法和字除法, 其操作类型取决于 SRC( 除数 ) 的类型 无符号数除法指令 (DIV) 格式 :DIV SRC

除法指令 带符号数除法指令 (IDIV) 格式 :IDIV SRC 其中,DST 为隐含寻址 ( 作被除数 ) 字节除时, 被除数一定在 AX 中字除时, 被除数一定在 DX:AX 中 SRC( 除数 ) 不能为立即数

除法指令 功能 : 字节除法 : (AX)/(SRC) 商 余数 AL AH 字除法 : (DX:AX)/(SRC) 商 余数 AX DX

除法指令 除法运算后, 标志位没有意义 除法不允许出现除数为 0 或商溢出, 若发生除数为 0 或商溢出则其结果没有意义, 并引起中断 ( 关于中断的概念以后再作介绍 )

除法指令 例 1. 下列指令是合法的 DIV BL IDIV CX DIV WORD PTR [BX][SI] 下列指令是非法的 DIV 12 〤 SRC( 除数 ) 不能为立即数寻址 DIV [SI]+02H 〤 SRC 类型不明确 IDIV AX,BL 〤 DST( 被除数 ) 应为隐含寻址

除法指令 例 2. 在存储器 HEX 单元存放着一个字节的无符号二进制数, 试将其转换成十进制数以分离 BCD 数形式存到 BCD1 以下存储单元 ( 设个位存在低地址单元 )

除法指令 分析题目 HEX BCD1 66H??? 个位十位百位

除法指令 确定算法 : 用除 10 取余法 即用被转换的数除以 10, 第一次得到的余数为转换后的十进制数的个位数, 用中间商再除以 10, 得到的余数为转换后十进制数的十位数, 最后的商为十进制数的百位数

除法指令 流程图 : START AL (HEX) AH 0 BL 10 SI OFFSET BCD1 (AX)/(BL) ((SI)) AH AH 0 (AX)/(BL) ((SI)+1) (AH) ((SI)+2) (AL) 结束

除法指令 程序 : ; 在数据段定义变量如下 : HEX DB 66H BCD1 DB 3 DUP (?) ; 在代码段编写程序 MOV AH,0 MOV AL,HEX MOV BL,10 MOV SI,OFFSET BCD1 DIV BL MOV [SI],AH MOV AH,0 DIV BL MOV [SI]+1,AH MOV [SI]+2,AL...

除法指令 程序执行后存储器示意图 HEX BCD1 66H 02H 00H 01H 个位十位百位

符号扩展指令 5. 符号扩展指令 (CBW/CWD) 格式 : CBW 功能 : 将 AL 中的符号扩展到 AH 中, 即将一个字节的带符号数 扩展成一个字

符号扩展指令 格式 : CWD 功能 : 将 AX 中的符号扩展到 DX 中, 将一个字的带符号数扩展 成双字

符号扩展指令 应用场合 : 在算术运算中, 有时会遇到两个长度不等的数进行加 减运算, 此时, 应将长度短的数的位数扩展, 以使两数的长度一致, 只有这样, 才能保证参加运算的两个操作数的类型是一致的 对于一个无符号数来说, 这种扩展是简单的, 只要将其高位补 0 就可以 ; 但对一个带符号数来说就不一样了, 高位扩展时, 补 0 还是补 1 就取决于该数的符号位

符号扩展指令 例 1. 若 (AL)=05H, 则 CPU 执行 CBW 后, (AL)=0005H 若 (AL)=0FDH, 则 CPU 执行 CBW 后, (AX)=0FFFDH [-3] 补

符号扩展指令 例 2. 写出计算 Y=a*b+c-18 的程序 (P103 例 4.3.1) ; 在数据段定义变量如下 : DAT1 DB 34H ;34H 为变量 a 的一个设定值 DAT2 DB 56H ;56H 为变量 b 的一个设定值 DAT3 DB 0E7H ;0E7H 为变量 c 的一个设定值 DATY DW? ;DATY 单元存放结果

; 在代码段编写程序 MOV AL,DAT1 ; 取 a MOV BL,DAT2 ; 取 b IMUL BL ;(AL)*(BL) (AX) MOV BX,AX ;(AX) (BX) MOV AL,DAT3 ; 取 c CBW ; 扩展 AL AX ADD AX,BX ;(AX)+(BX) (AX) SUB AX,18 MOV DATY,AX 4.2 8086/8088 指令系统 符号扩展指令 Y=a*b+c-18

6.BCD 数调整指令 BCD 数调整指令 我们知道,BCD 数是用 4 位二进制码 表示的一位十进制数 在计算机中, 所 有运算均以二进制运算为基础, 要实现 对 BCD 数进行十进制运算, 通常分两步 进行, 首先对 BCD 数按二进制进行运算, 然后对运算结果进行相应的调整, 才能得到正确的 BCD 数结果

BCD 数调整指令 为什么必须调整呢? 这是因为 4 位二进制码有 16 种不同的状态, 而一位十进制数只有 10 种不同的数字, 当 BCD 数按二进制运算时, 不可避免地会出现 6 种不用的状态, 加减运算的十进制调整指令的基本思想就是在必要的时候让运算的结果跳过 6 种不用的状态

BCD 数调整指令 BCD 数由 4 位二进制码组成, 因此一个字节中可以存放一位 BCD 数, 也可以存放两位 BCD 数, 通常将前者称为分离 BCD 数, 后者称为组合 BCD 数

BCD 数调整指令 BCD 数调整指令共有 6 条, 如下所示 : 助记符格式 功 能 说 明 AAA 加法分离 BCD 调整 AAS 减法分离 BCD 调整 DAA 加法组合 BCD 调整 DAS AAM AAD 减法组合 BCD 调整 乘法分离 BCD 调整 除法分离 BCD 调整

BCD 数调整指令 在 BCD 数运算时, 应注意以下几个问题 : 1BCD 数加 减法运算, 可以按分离 BCD 数运算, 也可以按组合 BCD 数运算 而 BCD 数乘 除法运算, 只能按分离 BCD 数运算

BCD 数调整指令 2 被调整的数隐含的存放在 AL 中 ( 乘法时在 AX 中 ) 3 加法 减法 乘法都是先运算后调整, 而除法是先调整后运算

BCD 数调整指令 下面通过例子说明 BCD 数的调整规则 例 1. 用组合 BCD 数求 1945+1271 的运算 设加数及和的低字节放在低地址单元中 加数及和的高字节放在高地址单元中

程序上 程序下 4.2 8086/8088 指令系统 BCD 数调整指令 在数据段定义变量如下 : BCD1 DB 45H,19H BCD2 DB 71H,12H SUM DB 3 DUP(?) BCD1 BCD2 SUM 45H 19H 71H 12H??? 被加数 加数 和

BCD 数调整指令 人要做的运算为 CPU 要做的运算为 1 9 4 5 1 9 4 5 H + 1 2 7 1 + 1 2 7 1 H 3 2 1 6 2 B B 6 H ADC 加法 ADD 加法结果不是 BCD 数结果, 需用 DAA 调整

BCD 数调整指令 在程序段编写程序如下 : 变量定义 MOV AL,BCD1 ADD AL,BCD2 DAA MOV SUM,AL MOV AL,BCD1+1 0 1 0 0 0 1 0 1B + 0 1 1 1 0 0 0 1B 1 0 1 1 0 1 1 0B + 0 1 1 0 0 0 0 0B [1] 0 0 0 1 0 1 1 0B

BCD 数调整指令 ADC AL,BCD2+1 DAA MOV SUM+1,AL MOV AL,0 ADC AL,0 MOV SUM+2,AL 0 0 0 1 1 0 0 1B + 0 0 0 1 0 0 1 0B 0 0 1 0 1 1 0 0B + 0 0 0 0 0 1 1 0B 0 0 1 1 0 0 1 0B CF 变量定义

BCD 数调整指令 BCD1 BCD2 SUM 45H 19H 71H 12H 16H 32H 00H 被加数 加数 和 1 9 4 5 + 1 2 7 1 3 2 1 6

BCD 数调整指令 例 2. 十进制 (BCD) 数乘法 5*9 运算 MOV AL,05H MOV BL,09H MUL BL ; AAM ; 即 45 (AL)*(BL) AX (AX)=002DH (AX)/10 (AX)=0405H 商 AH( 十位 ) 余数 AL( 个位 )

BCD 数调整指令 例 3. BCD 数除法运算 设有两数 X,Y, 且 X=85, Y=6, 用分离 BCD 数完成 BCD1 BCD2 BCD3 05H 08H 06H??? 被除数 04H 01H 01H 除数 商 余数 6 1 4 8 5 6 2 5 2 4 1 X/Y 程序上 程序下

BCD 数调整指令 我们有如下程序 : BCD1 DB 05H, 08H BCD2 DB 06H BCD3 DB 3 DUP(?) MOV AH, 0 MOV AL, BCD1+1 MOV BL, BCD2 ; 高位在高字节 ;(AL)=08 ;(BL)=06 被除数在 AX 中 除数放在 BL 中 变量定义

BCD 数调整指令 DIV BL MOV BCD3+1, AL MOV AL, BCD1 AAD DIV BL MOV BCD3, AL MOV BCD3+2, AH ;(AX)/(BL) (AL)=01,(AH)=02 ; 商的高位送 BCD3+1 ;(AL)=05 ;(AL)=(AH)*10+(AL)=25,0 (AH) ;(AX)/(BL) (AL)=04,(AH)=01 ; 商的低位送 BCD3 ; 余数送 BCD3+2 变量定义

逻辑运算类指令 三. 逻辑运算类指令 (5 条 ) 5 条逻辑运算类指令书写格式与完成的功能如下表所示 助记符格式 功 能 说 明 与 AND DST,SRC (DST) ( DST) ( SRC) 或 OR DST,SRC (DST) ( DST) ( SRC) 异或 XOR DST,SRC 测试 TEST DST,SRC (DST) ( DST) ( SRC) (DST) (SRC) 置各标志位 非 NOT DST (DST) 中各位取反

逻辑运算类指令 指令的运算都是按位进行的 NOT 指令是将操作数的各位取反, 其它指令是两个操作数的对应位实行相应的逻辑运算 指令可以有字节操作, 也可以有字操作

逻辑运算类指令 指令执行后对标志位的影响情况 : 除 NOT 指令对标志位不产生影响外, 其余指令将使 CF OF 置 0, 并以正常规则设置 SF ZF 和 PF 的状态

逻辑运算类指令 应用场合 AND 指令经常用在使 DST 的某些位清零, 其余位不变的场合 例如 : 使 AL 寄存器的高 4 位清零, 低 4 位不变, 方法为 : AND AL, 0FH

逻辑运算类指令 OR 指令经常用在使 DST 的某 些位置 1, 其余位不变的场合 例如 : 使 BX 寄存器的低 4 位置 1, 其余位不变, 方法为 : OR BX, 000FH

逻辑运算类指令 XOR 指令经常用在使 DST 的某 些位取反, 其余位不变的场合 例如 : 使 AL 寄存器的低 4 位取反, 其 余位不变, 方法为 : XOR AL, 0FH

逻辑运算类指令 (AL)=X X X X X X X X B 0 0 0 0 1 1 1 1 B X X X X B 不变 取反

逻辑运算类指令 NOT 指令是将 DST 的各些位取反 例如 : 若 (AL)=00H, 则 CPU 执行 NOT AL 指令后, (AL)=0FFH

逻辑运算类指令 TEST 指令主要应用在条件分 支程序设计中 例如 : 测试 BX 的 D3 D2 位, 若同时 为 0, 则 AL 置 1, 否则 AL 清零

逻辑运算类指令 TEST BX, 000CH JZ SET1 MOV AL, 0 JMP EXIT SET1:MOV AL, 0FFH EXIT:

逻辑运算类指令 例 : 使 AX 清 0 可用以下方法 MOV AX,0000H XOR AX,AX AND AX,0000H SUB AX,AX MOV CL,16 SHL AX,CL

移位和循环移位指令 四. 移位和循环移位指令 1. 移位指令 1 逻辑移位 移位次数 左移 SHL DST, CNT 右移 SHR DST, CNT CF D7 D1 D0 0 0 D7 D1 D0 CF

移位和循环移位指令 指令中的目的操作数 DST 可以为除立即数和 CS 以外的其它各种寻址方式,CNT 则可以为立即数和寄存器 CL 当 CNT 为寄存器 CL 时, 移位次数存放在 CL 中 注意 : 当 CNT 为立即数时, 其值只能为 1

移位和循环移位指令 例. SHR AX, 1 ; 将 AX 的内容右移 1 位, 最 ; 高位补 0 SHL AL, CL; 将 AL 的内容左移 CL 中指 ; 定的次数, 且每次移位 ; 最低位补 0

移位和循环移位指令 SHL DAT1[SI],CL; 将内存某单元的 ; 内容左移 CL 中所 ; 中指定的次数 SHR BL, 2 〤当移位次数 >1 时, 必 须用 CL 提供移位次数

2 算术移位 4.2 8086/8088 指令系统 移位和循环移位指令 左移 SAL DST, CNT 右移 SAR DST, CNT CF DST 0 DST CF

2. 循环移位指令 移位和循环移位指令 1 不带 CF 的循环移位 左移 ROL DST, CNT 右移 ROR DST, CNT CF DST DST CF

移位和循环移位指令 2 带 CF 的循环移位 左移 RCL DST, CNT 右移 RCR DST, CNT CF DST DST CF

移位和循环移位指令 以上所有移位指令和循环移位指令对 DST 和 CNT 的要求同逻辑移位指令规则, 即 : 指令中的目的操作数 DST 可以为除立即数和 CS 以外的其它各种寻址方式,CNT 则可以为立即数和寄存器 CL 当 CNT 为寄存器 CL 时, 移位次数存放在 CL 中 注意 : 当 CNT 为立即数时, 其值只能为 1

移位和循环移位指令 例 1. 若 (BL)=01110010B,(CL)=3, CF=1, 则 CPU 执行 : RCR BL, CL 指令后, (BL)=10101110B=0AEH

D7 D6 D5 D4 D3 D2 D1 D0 0 1 1 1 0 0 1 0 1 一次 D7 D6 D5 D4 D3 D2 D1 D0 1 0 1 1 1 0 0 1 0 二次 D7 D6 D5 D4 D3 D2 D1 D0 0 1 0 1 1 1 0 0 1 三次 D7 D6 D5 D4 D3 D2 D1 D0 1 0 1 0 1 1 1 0 0

4.2 8086/8088 指令系统 移位和循环移位指令 例 2. 编程序实现 5*10 运算 ( 不能用 MUL 指令 ) 算法 : 5*10 =5*(2+8) =5*2+5*8

移位和循环移位指令 MOV AL, 05H SHL AL, 1 ;(AL)=5*2 MOV BL, AL ;(BL)=5*2 MOV CL, 2 SHL AL, CL ;(AL)=5*8 ADD AL, BL ;(AL)=5*10

处理器控制指令与标志处理指令 五. 处理器控制指令与标志处理指令 助记符格式 功能说明 助记符格式 功能说明 CLC 0 CF CLI 0 IF STC 1 CF STI 1 IF CMC CF CF NOP 空操作 CLD 0 DF HLT 暂停 STD 1 DF

移位和循环移位指令 NOP 指令 CPU 执行该指令时不完成任何具体功能也不影响标志位, 只占用机器的 3 个时钟周期 所以, 也称为空操作指令

移位和循环移位指令 HLT 指令 该指令是使 CPU 进入暂停状态 只有当下面三种情况之一发生时,CPU 才退出暂停状态 这三种情况是 : CPU 的复位输入端 RESET 线上有复位信号 ; 非屏蔽中断请求输入端 NMI 线上出现请求信号 ; 可屏蔽中断输入端 INTR 线上出现请求信号且标志寄存器的中断标志 IF=1