條件處理.

Slides:



Advertisements
Similar presentations
平面构成 第六章 平面构成形式与法则 — 破规与变异. 第七章 平面构成形式与法则 — 破规与变异 破规与变异构成的形式、有下列四类: 一、特异构成 特异构成。其表现特征是,在普遍相同性质的事物 当中,有个别异质性的事物,便会立即显现出来。
Advertisements

(5)能根据具体要求绘制简单的电路图(不超过两个用电器) b
两汉文学及汉代诗歌.
高中思想政治课程标准的追求 江苏省教研室 鞠文灿.
多核结构与程序设计 杨全胜 东南大学成贤学院计算机系.
近现代文学概说.
受益權 自由權 參政權 納稅 平等權 其他基本權 服兵役 2-1人民基本權利 的種類 2-3憲法規定的 人民基本義務 受國民教育
电路和电流 考点知识梳理 中考典例精析 课堂达标训练 专题训练.
中國歷史人物—孫中山 姓名:黎昕晴 班別:五理.
输入输出程序设计 输入输出的基本概念 无条件方式输入输出 查询方式输入输出 中断方式输入输出.
宁波万里国际学校 陈湘龙
微型计算机技术 教 学 指 导(七) 太原广播电视大学 郭建勇.
第10章 DOS功能调用与BIOS中断调用.
第7章 8086/8088汇编语言程序设计 7.1 引言 7.2 顺序程序设计 7.3 分支结构程序设计 7.4 循环结构程序设计
足太阳膀胱经.
大连理工大学软件学院 软件工程系 赖晓晨 计算机组成与结构 大连理工大学软件学院 软件工程系 赖晓晨
契約 課程:文書實務與應用 教師:黃湃翔老師.
本周实验安排 实验内容:(P231)人名排序的例子。
第2章 Intel IA-32/Intel 64处理器 结构与原理
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年10月30日.
第3章 80x86汇编语言程序设计(下).
第3章 80x86汇编语言程序设计(中) 时间不够的情况下只讲16位汇编.
4.1 汇编语言 4.2 顺序结构程序 4.3 分支程序设计 4.4 循环程序设计 4.5 子程序设计
第3章 80x86汇编语言程序设计(上) 16位汇编版本 时间不够的情况下只讲16位汇编.
9.1 可编程并行输入/输出接口芯片8255A 9.2 可编程计数器/定时器 可编程串行输入/输出接口芯片8251A
3.3.5 程序控制指令 控制转移指令分为: 转移指令 循环控制指令 调用和返回指令 中断指令.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月26日.
第5章 循环与分支程序设计  循环程序设计  分支程序设计.
汇编语言程序设计 Assembly Language Programming
第三章 寻址方式与指令系统 3.1 寻址方式 一条指令通常由两大部分构成: 操作码 操作数
微机原理与接口技术 第3章 8086指令系统 朱华贵 2015年09月25日.
第6章 DMA传输 6.1 DMA传输原理 6.2 DMA控制器8237A A的编程使用 欢迎辞.
第7章 并行接口 7.1 简单并行接口 7.2 可编程并行接口8255A 7.3 键盘接口 7.4 LED显示器接口.
第九章 计数器和定时器电路 第一节 概述 第二节 Intel 8253的控制字 第三节 Intel 8253的工作方式 第九章 计数器和定时器电路 第一节 概述 第二节 Intel 8253的控制字 第三节 Intel 8253的工作方式 第四节 Intel 8253在IBM PC机上的应用.
Assembly Language Programming
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月05日.
第八章 输入输出程序设计 总线 CPU MEM I/O接口 I/O设备.
第3章 IA-32指令系统 3.1 基本数据类型 3.2 IA-32的指令格式 3.3 IA-32指令的操作数寻址方式
第8章 寻址方式与指令系统.
第二部分 PC 微机异步通信适配器的分析和使用 一、PC中的UART 1.INS PC16450/PC16550
基本的”防”黑客技术 Basic” ” Hacker Technique
第一章 8086程序设计 第二章 MCS-51程序设计 第三章 微机基本系统的设计 第四章 存贮器与接口 第五章 并行接口
汇编语言程序设计课程设计 第二次实验 DEBUG基本命令与算术运算指令
奢侈稅成效分析與房市未來發展 吳中書 中華經濟研究院 第十九屆亞太財務經濟會計及管理會議 ~07.09.
變數命名 保留字(Reserved Word)
微型机系统与接口技术自学部分 只作扩展知识用 本电子课件包含2011版第3, 6, 7, 8章自学部分 东南大学计算机科学与工程学院.
微型计算机原理及应用.
第3章 微型计算机输入输出接口 3.1 输入/输出接口 3.2 输入输出数据传输的控制方式 3.3 开关量输入输出接口 欢迎辞.
第六章 子程序结构 §6.1 子程序的设计方法 §6.2 嵌套与递归子程序 §6.3 子程序举例 §6.4 DOS系统功能调用.
嵌入式系统教案 武汉创维特信息技术有限公司 2019/1/18.
第九章 高级宏汇编语言 9.1 结构 结构就是将逻辑上有一定关系的一组数据,以某种方式组合在一起所形成的数据形式。
第5章 循环与分支程序设计 学习目标: 了解并掌握循环程序的构造方法,尤其是对循环控制条件的设置以及可能出现的边界情况的考虑。掌握起泡排序算法这种多重循环程序设计中的常用方法。交换标志位的设置在此算法中更能提高效率。学会在数组排序算法中采用折半查找法来提高查找效率。学会使用跳跃表法实现CASE结构。
3.4.5 控制转移指令(Control transfer instructions) (一)、控制转移指令概述
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月19日.
第五章:输入输出基本技术 主讲教师:范新民.
第二章 8086微处理器. 第二章 8086微处理器 微处理器的基本结构 8086微处理器的主要特性和内部结构 8086CPU的工作模式和引脚信号 8086的存储器管理 8086的总线操作和时序.
第九章 目标代码生成.
第10章 可编程外围接口芯片8255A及其应用 10.1 概述 A的工作原理 A的应用举例.
习题3 1、 分别说明下列指令的原操作数和目的操作数各采用什么寻址方式。 设定如下: ①立即寻址 ② ① ②寄存器寻址
可编程定时计数器.
第九章 BIOS和DOS中断 在存储器系统中,从地址0FE000H开始的8K ROM(只读存储器)中装有BIOS(Basic Iuput /output System)例行程序。驻留在ROM中的BIOS给PC系列的不同微处理器提供了兼容的系统加电自检,引导装入,主要I/O设备的处理程序以及接口控制等功能模块来处理所有的系统中断。使用BIOS功能调用,给程序员编程带来很大方便,程序员不必了解硬件操作的具体细节,直接用指令设置参数,然后中断调用BIOS中的子功能,所以利用BIOS功能编写的程序简洁,可读性好,
第2章 80x86计算机组织  计算机系统  存储器  中央处理机  外部设备.
《微型计算机原理与接口技术》 第4版 王良 宁德师范学院 吴宁 乔亚男 编著 清华大学出版社 出版
第5章 循环与分支程序设计  循环程序设计  分支程序设计.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年12月17日.
美麗的西子湖.
第6章 子程序结构 在程序设计中,我们会发现一些多次无规律重复的程序段或语句序列。解决此类问题一个行之有效的方法就是将它们设计成可供反复调用的独立的子程序结构,以便在需要时调用。在汇编语言中,子程序又称过程。 调用子程序的程序称为主调程序或主程序。 2019/7/20 ch6.
大数据搜索挖掘实验室 第五章 子程序设计 张华平 副教授 博士 Website: 大数据搜索挖掘实验室
第三章 8086的指令系统 8086指令特点 8086的寻址方式 8086的指令格式及数据类型 8086的指令集.
第5章 中 央 处 理 器 5.1 CPU的功能和组成 5.2 指令周期 5.3 时序产生器和控制方式 5.4 微程序控制器
Presentation transcript:

條件處理

CPU旗標 1. 結果為零,則設定零值旗標。 2. 運算結果太大或太小,設定進位旗標。 3.符號旗標是目的運算元高位元的複製。 4.運算為無效的結果,設定溢位旗標。 5.當運算元中低位元組裡其值為一的位元為偶數個時,設定同位旗標就。

CPU旗標 當運算的結果為零,則設定零值旗標。 如: AX=1 時 SUB AX,1 ; AX=0 ; ZF=1

CPU旗標 當指令所產生的目的運算元之結果太大或太小時,進位旗標會被設定。 如: AX=0FFFFh ADD AX, 1 ; AX=10000h ; CF=1

CPU旗標 符號旗標是目的運算元高位元的複製,若符號旗標被設定表示為負,被清除則為正。 如: AX=01 MOV AX, 08000h ; AX=08000h ; SF=1

CPU旗標 當指令產生無效的有號結果,則溢位旗標就會被設定。 如: AX=07FFFh ; >0 ADD AX,1h ; AX=08000h <0 ; OF=1

CPU旗標 當指令造成目的運算元中低位元組裡其值為一的位元為偶數個時,同位旗標就會被設定。 如: AX=0A5A5H, AL=A5h=10100101 MOV AX,AX ; PF=1,偶數個1

AND指令 AND指令完成兩運算元中,相關對應位元間的AND布林運算(按位元的 ( bitwise ) )並且將結果存放於目的運算元 。

AND指令(cont.) 按位元的 ( bitwise ):相關對應位元間的運算 指令格式: AND 目的運算元,來源運算元 0100 0001 0110 0001 1110 0001

將字元轉換成大寫字母 AND指令提供了一個簡單的方法將字母從小寫轉換成大寫。 大寫字母 (A,B,C,…Z)ASCII碼(41h,42h….) 小寫字母 (a,b,c,…z)ASCII碼(61h,62h….) 41h0100 0001 61h0110 0001 AND mask1101 1111 61h and mask0100 0001=41h

OR指令 OR指令完成兩個運算元間,每對相對應位元的OR布林運算,並且將結果存放於目的運算元: 指令格式: OR 目的運算元,來源運算元 61h0100 0001 41h0110 0001 OR mask0010 0000 41h OR mask0110 0001=61h

XOR指令 XOR指令完成兩運算元間相對應位元的互斥或(exclusive-OR)布林運算並且將結果存放於目的運算元。 指令格式:

清除或設定個別CPU旗標(and, or) 設定清除零旗標 and al,0 ;ZF=1 or al,1 ;ZF=0 設定清除符號旗標  設定清除零旗標 and al,0 ;ZF=1 or al,1 ;ZF=0  設定清除符號旗標 or al,80h ;SF=1 and al,7Fh ;SF=0

清除或設定個別CPU旗標 (設定、運算) 設定清除進位旗標 stc ;CF=1 clc ;CF=0 設定清溢位旗標 mov al,7Fh inc al ;OF=1 or eax,0 ;OF=0

條件跳越 根據運算結果更改程式流程, 提供此功能之指令稱條件跳越指令 一般應用條件跳越指令完成分支流程圖(基本條件結構) 運算指令 是 條件成立? 是 否

條件結構 在IA-32指令集中没有高階的邏輯結構,但無論多複雜的結構都能使用比較(comparisons)和跳越(jumps)的組合來完成。   運算指令 條件成立? 是 否 CMP cmp al,0 Jz L1 … L1: and al,B0h Jnz L2 … L2: Jcond

Jcond指令 當旗標條件為true時條件跳越指令會分支到目的標號(destination label),若旗標條件為false時則會執行緊接在條件跳越之後的指令。   條件成立? 是 否 Jcond destination(是) ; 否

Jcond指令(cont.) 限制:要求跳越的目的地必須是現行程序內的標號,能以宣告全域標號(其後接::)來免除這個限制 跳越的範圍必須是下一個指令偏移量的-128到+127位元組內。 

使用CMP指令 最常使用之運算指令為CMP (因為不會更改運算元數值) 如: 運算指令 是 條件成立? 否 CMP AX,5 ; AX=5? JE L1 CMP AX,6 ; AX<6? JL L1 CMP AX,4 ; AX>4? JG L1

條件結構 區塊結構IF敘述 IF (複合運算式) WHILE迴圈

區塊結構IF敘述 if(運算式) 敘述列表1 else 敘述列表2 結束 開始 運算式 敘述1 敘述2 If (op1==op2) { X=1; Y=2; }

區塊結構IF敘述(cont.) 範例1 使用Java/C++語法, 如果 op1和op2相等則執行兩個指定敘述: 開始 運算式 敘述1 敘述2 結束 範例1 使用Java/C++語法, 如果 op1和op2相等則執行兩個指定敘述:  If (op1==op2) { X=1; Y=2; }

CMASM MOV eax, op1 CMP eax, op2 JE L1 JMP L2 If (op1==op2) L1: { mov X,1 mov Y,2 L2: If (op1==op2) { X=1; Y=2; }

複合運算式 右圖之運算式除基本之判斷運算外, 也可是多層級之複合運算式, 如: (a1>b1)AND (b1>c1) (a1>b1) OR (b1>c1) 開始 運算式 敘述1 敘述2 結束

AND邏輯運算子 If(a1>b1)AND(b1>c1) 第一個運算式 第二個運算式 CMP al, bl JA L1 JMP NEXT L1: CMP bl, cl JA L2 JMP NEXT L2: mov X,1 Next:

OR邏輯運算子 If(a1>b1)OR(b1>c1) 第一個運算式 第二個運算式 CMP al, bl JA L1 CMP bl, cl JBE NEXT L1: mov X,1 Next: (below equal) =JA不成立

WHILE迴圈 WHILE 結構在執行一區塊的敘述前會先測試一條件是否成立,只要條件保持成立那麼這些敘述就會重複執行這些敘述,以下的使用C++所寫的迴圈 while (val1<val2){ val1++; val2--; }

WHILE迴圈(cont.) while (val1<val2) { val1++; val2--; } Mov eax, val1 CMP eax,val2 JNL endwhile INC eax DEC val2 JMP while endwhile: MOV val1, eax