幻灯片 1

Similar documents
Microsoft PowerPoint - C15_LECTURE_NOTE_06

Microsoft PowerPoint - C15_LECTURE_NOTE_06

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

untitled

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

幻灯片 1

<4D F736F F D20C7B6C8EBCABDCFB5CDB3C9E8BCC6CAA6B0B8C0FDB5BCD1A75FD1F9D5C22E646F63>

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


Microsoft PowerPoint - CH3_3.ppt [只读] [兼容模式]

第4章 80X86指令系统

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

数据库系统概论

<4D F736F F D C4EAC6D5CDA8B8DFB5C8D1A7D0A3D5D0C9FAC8ABB9FACDB3D2BBBFBCCAD4CEC4BFC6D7DBBACDCAD4BEEDBCB0B4F0B0B82DD6D8C7ECBEED2E646F63>

2 / 2016/01/ No. -A- -B :45 Fine Hard ST -1 FN 1 FVALUE = 980 Bib Code Time Points

<4D F736F F D20B5DAC8FDCBC4D5C2D7F7D2B5B4F0B0B82E646F63>

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

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

一、填空题


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

微處理機期末專題

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

图 内部结构图 8251 的外部引脚如图 所示, 共 28 个引脚, 每个引脚信号的输入输出方式如图中的箭 头方向所示

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

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

:23:13 solo estoy( ) 老 师 SIMD 技 术 ALU 同 时 处 理 的 数 据 长 度 只 能 是 ALU 最 大 位 数 的 整 数 分 之 一 对 吗 :25:16 solo estoy( )

微机原理--汇编、连接和调试

Ps22Pdf


《微型计算机原理》

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



1








Are You suprised ?

Microsoft PowerPoint - C15_LECTURE_NOTE_05.ppt

数据库系统概论

学习MSP430单片机推荐参考书

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

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

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

PowerPoint Presentation

数据库系统概论

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


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

Microsoft PowerPoint - os_4.ppt

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

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

(譯本)

PowerPoint Presentation

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

<4D F736F F F696E74202D D D6B8C1EECFB5CDB DC6E4CBFBD6B8C1EE2E BBCE6C8DDC4A3CABD5D>

06721 main() lock pick proc() restart() [2][4] MINIX minix2.0 GDT, IDT irq table[] CPU CPU CPU CPU (IDTR) idt[] CPU _hwint00:! Interrupt

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

消防论文(二)

<4D F736F F D20C7B0CBC4D5C2D7F7D2B5CCE22E646F6378>

Microsoft PowerPoint - chapter5.ppt

DPJJX1.DOC

数据库系统概论

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

回 复 : 一 发 行 人 的 回 复 说 明 公 司 于 2015 年 7 月 2 日 召 开 的 第 六 届 董 事 会 第 三 次 会 议 和 2015 年 8 月 5 日 召 开 的 2015 年 第 二 次 临 时 股 东 大 会 审 议 通 过 了 关 于 公 司 2015 年 非 公

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

习 题 一

今天刚发现的, 比较简单, 于是就来简单分析下吧 该感染样本很简单, 新加了个区段放病毒执行代码, 执行病毒代码, 最后跳回原入口点来执行原文件 下面就是感染后的代码的简单分析 : ; =============== S U B R O U T I N E =====================

<4D F736F F D C4EAB9FABCD2B9ABCEF1D4B1D0D0D5FEC4DCC1A6B2E2D1E9A3A841C0E0A3A92E646F63>

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

Microsoft PowerPoint - C15_LECTURE_NOTE_05.ppt

Microsoft PowerPoint - C15_LECTURE_NOTE_04.ppt

Microsoft PowerPoint - C15_LECTURE_NOTE_04.ppt

組譯與連結(Ver6

4.2 DOS 系统功能调用和 BIOS 中断调用 概述 磁盘操作系统 DOS 采用模块化 层次化结构, 其层次结构如图所示 2015 年 4 月 13 日星期一 7 时 45 分 11 秒 2

主要内容 : 汇编语言源程序的结构汇编语言语句格式伪指令语句功能调用汇编语言程序设计方法宏汇编和条件汇编 2015 年 3 月 30 日星期一 7 时 58 分 57 秒 2

CH559指令周期.doc

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

instructions.PDF

Ps22Pdf


Linux kernel exploit研究和探索

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

untitled

Microsoft Word - Ö¸Á.doc

HADL_General Terms of Delivery_chin

MergerPdf.dll

《C语言程序设计》教材习题参考答案

目 录

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

06寫作魔法學堂─學習單附錄及版權頁

li 侉 2. 在 下 列 加 点 字 的 正 确 读 音 旁 打 : (1) 我 看 见 路 边 有 一 条 蛇 A.sh 佴 B.sh 佶 C.sh 侑 D.sh 侉 (2) 外 面 的 泥 土 冻 得 很 硬 A.y 侏 n 倮 B.y 侃 n 倮 C.y 佾 n 倮 D.y 佻 n 倮 (3

出國報告電子檔規格

MSP430 MSP430 F149 MSP430F149 P USART MSP430F PWM 63#

Transcription:

字符串处理是指对一系列的字母或数字的代码进行相同功能的处理 计算机中字符代码一般都采用 ASCII 码, 每个字符的代码占一个字节, 一组字符串存放在一个连续的存储区中

存放在连续的存储区中的这组字符串, 可看为一个数据块 为了提高对字符串 ( 或数据块 ) 的处理效率,8086/8088 指令系统中专门提供了一组对字符串处理的指令, 这些指令包括 :

字符串传送指令 (MOVS) 字符串比较指令 (CMPS) 字符串扫描指令 (SCAS) 字符串装入指令 (LODS) 字符串存储指令 (STOS)

字符串处理指令即可以按字节操作, 也可以按字操作, 且 DST 和 SRC 的寻址方式均为隐含寻址 这类指令要遵循的共同约定如下 :

1 若源串在存储器, 则存储器地址由 DS:SI 确定 ; 若源串在寄存器, 则 : 字节操作时, 在 AL 中字操作时, 在 AX 中

2 若目的串在存储器, 则存储器地址必须由 ES:DI 确定 ; 若目的串在寄存器, 则 : 字节操作时, 在 AL 中字操作时, 在 AX 中

3 字符串操作指令 CPU 执行后, (SI) 或 (DI) 会自动地修改, 其 修改方向受 DF 控制

当 DF= 0 时, 会自动地增 1 或 2 1 时, 会自动地减 1 或 2 增 / 减 1/2, 受操作类型控制, 字节操作时, 增 / 减 1 字操作时, 增 / 减 2

4 字符串处理指令的重复次数 ( 重复执行的次数 ) CX

字符串处理指令的助记符及其主 要完成功能如下表所示

助记符格式 MOVS DST, SRC MOVSB MOVSW 主要功能 (ES:DI ) (DS:SI) 字操作时 : (SI) (SI)±2 (DI) (DI)±2 字节操作时 :(SI) (SI)±1 (DI) (DI)±1 字节传送字传送

助记符格式 CMPS DST, SRC CMPSB CMPSW SCAS DST SCAB SCAW 主要功能 (DS:SI) - (ES:DI) 建立标志字操作时 :(SI) (SI)±2 (DI) (DI)±2 字节操作时 :(SI) (SI)±1 (DI) (DI)±1 字节比较字比较字扫描时 : (AX) - (ES:DI) 建立标志 (DI) (DI)±2 字节扫描时 : (AL) - (ES:DI) 建立标志 (DI) (DI±1)

助记符格式 LODS SRC LODSB LODSW STOS DST STOSB STOSW 主要功能 字操作时 :(AX) (DS:SI) (SI) (SI)±2 字节操作时 :(AL) (DS:SI) (SI) (SI)±1 字操作时 :(ES:DI) AX (DI) (DI)±2 字节操作时 :(ES:DI) (AL) (DI) (DI)±1

Χ 重复前缀 字符串操作指令除了完成传送 比 较 扫描 装入和存储等功能外, 还实现地址指针的自动修正, 这对程序实现循环提供了方便 但对每条指令来说,

它只执行一次, 当加上重复前缀以后, 后面的字符串操作指令就可以重复地执行, 直到某个条件满足为止 重复前缀有三种形式, 它们的助记符格式及功能说明见下表所示

助记符格式 REP MINST MOVSB MOVSW MINST STOSB STOSW LODSB LODSW 主要功能 当 (CX) 0 时, 重复执行 MINST,(CX)-1 (CX);

助记符格式 主要功能 REPE/REPZ CINST CMPSB CINST CMPSW 当 (CX) 0 时, 且 ZF=1 时, 重复执行 CINST, (CX)-1 (CX);

助记符格式 主要功能 REPNE/REPNZ CINST SCASB CINST SCASW 当 (CX) 0 时, 且 ZF=0 时, 重复执行 CINST, (CX)-1 (CX).

Χ 字符串处理指令应用举例 例 1.(P153 例 4.3.20(REP MOVSB 指令应用 )) 编写一子程序, 要求实现将一个数据 块从存储器的一个区域传送到另一个区域

分析题目, 提出编程思想 题目要求实现数据块传送 ( 搬家 ), 但并没有说明源数据块和目的数据块在存储器的地址 根据实际情况, 源数据块和目的数据块在存储器的地址有以下两种情况 :

1 源数据块和目的数据块的存储区域不重叠 2 源数据块和目的数据块的存储区域有部分重叠 其具体情况如下图所示

DS:SI ES:DI 源数据块 目的数据块 源数据块和目的数据块不发生重叠的情况

DS:SI 错 ES:DI DS:SI 对 ES:DI 源数据块 目的数据块 有部分重叠的情况 ( 一 ) 这时, 要让 SI DI 指向源和目的数据块的末址, 按地址递减方向搬

ES:DI DS:SI 目的数据块 源数据块 有部分重叠的情况 ( 二 ) 这时, 要让 SI DI 指向源和目的数据块的首址, 按地址递增方向搬

总之, 当 (SI) 低于 (DI) 时, 要让 SI DI 指向源和目的数据块的末址, 按地址递减方向搬 当 (SI) 高于 (DI) 时, 要让 SI DI 指向源和目的数据块的首址, 按地址递增方向搬

; 子程序说明文件 ; 子程序名 :SMOVE ; 子程序功能 : 数据搬家 ; 入口参数 : SADR 双字类型单元中存放的是源区的首地址, DADR 双字类型单元中存放的是目的数据区的首地址 SLENG 字类型单元中存放的是数据块中包含的字节数

; 出口参数 : 无 ; 用到的寄存器 :DS ES SI DI CX

子程序设计 CODES SEGMENT ASSUME CS:CODES SMOVE PROC FAR LDS SI, SADR ; 源区首地址 DS:SI LES DI, DADR ; 目标区首地址 ES:DI MOV CX, SLENG ; 长度 CX CLD CMP SI, DI ; (SI)>(DI)?

子程序设计 JA MOVE ; 高于, 则转到 MOVE STD ADD SI, CX DEC SI MOVE: MOVSB 或者 :MOVE: LOOP MOVE REP MOVSB RET RET SMOVE ENDP CODES ENDS

子程序设计 上面程序中, 若 DF=0,( 即按地址增大的方向传送 ), 我们有 : MOVE: REP MOVSB 等效于 MOVE: MOV AL,[SI] MOV ES:[DI],AL INC SI INC DI LOOP MOVE

子程序设计 上面程序中, 若 DF=1,( 即按地址减小的方向传送 ), 我们有 : MOVE: REP MOVSB 等效于 MOVE: MOV AL,[SI] MOV ES:[DI],AL DEC SI DEC DI LOOP MOVE

例 2. 字符串比较指令 CMPS 的应用 比较 STR1 和 STR2 两串是否相等 若相等, 则在屏幕上显示 ˊSAMEˊ, 若不相等, 则在屏幕上显示 ˊNOSAMEˊ

分析题目 STR1 STR2 ˊ1ˊ ˊ2ˊ ˊ3ˊ ˊ4ˊ ˊ1ˊ ˊ2ˊ ˊ5ˊ ˊ4ˊ 源串 目的串 比较两串是否相等, 指的是两串中对应单元的值均相等, 则两串相等 ; 否则, 两串不相等

程序设计 DATA SEGMENT STR1 DB ˊ1234ˊ STR2 DB ˊ1254ˊ STRING1 DB ˊSAMEˊ,0DH,0AH,ˊ$ˊ STRING2 DB ˊNOSAMEˊ,0DH,0AH, ˊ$ˊ DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA

程序设计 START: MOV AX, DATA MOV DS, AX MOV ES,AX LEA SI, STR1 LEA DI, STR2 MOV CX, 4 CLD REPE CMPSB

程序设计 JNE NSAME LEA DX,STRING1 MOV AH,09H INT 21H JMP EXIT NSAME: MOV AH,09H MOV DX, OFFSET STRING2 INT 21H

程序设计 EXIT: MOV AH, 4CH INT 21H CODE ENDS END START

程序设计 上面程序中, 我们对 REPE CMPSB 指令用一般数据处理指令实现, 可以有 : 等效于 REPE CMPSB JNE NSAME NEXT:MOV AL,[SI] CMP AL, ES:[DI] JNE NSAME INC SI INC DI LOOP NEXT

例 3. 字符串扫描指令的应用 若要在某个字符串 STRING 中查 找字符 A, 若查找不到转向 NOTFOUND, 那么, 我们可以有下面的程序段 :

例 3. 字符串扫描指令的应用 MOV AX,SEG STRING MOV ES,AX MOV DI,OFFSET STRING MOV CX,LENG1 MOV AL, A CLD REPNE SCASB

例 3. 字符串扫描指令的应用 NOTFOUND: JNE NOTFOUND

例 4. 字符串存储指令 (STOS) 的应用 若要对某数据缓冲区清零, 我 们可以有下面程序段 :

例 4. 字符串存储指令 (STOS) 的应用 MOV AX,SEG BUFDAT MOV ES,AX MOV DI,OFFSET BUFDAT MOV CX,LENGTH BUFDAT MOV AL,00 CLD REP STOSB

例 4. 字符串存储指令 (STOS) 的应用 指令 REP STOSB 将重复地将 AL 的内容送到 DI 所指单元, 并修正 DI 和 CX 的内容, 直到 (CX)=0 为止, 从而完成以 CX 内容为长度的 BUFDAT 为首地址的缓冲区全部清了零

Χ 字符串处理指令应用注意点小结 字符串处理指令即可以按字节操作, 也可以按字操作, 且 DST 和 SRC 的寻址方式均为隐含寻址 这类指令要遵循的共同约定如下 :

1 若源串在存储器, 则存储器地址由 DS:SI 确定 ; 若源串在寄存器, 则 : 字节操作时, 在 AL 中字操作时, 在 AX 中

2 若目的串在存储器, 则存储器地址必须由 ES:DI 确定 ; 若目的串在寄存器, 则 : 字节操作时, 在 AL 中字操作时, 在 AX 中

3 字符串操作指令 CPU 执行后, (SI) 或 (DI) 会自动地修改, 其 修改方向受 DF 控制

当 DF= 0 时, 会自动地增 1 或 2 1 时, 会自动地减 1 或 2 增 / 减 1/2, 受操作类型控制, 字节操作时, 增 / 减 1 字操作时, 增 / 减 2

4 字符串处理指令的重复次数 ( 重复执行的次数 ) CX

作业 : P190 34.