六章汇编语言及其程序设计.ppt

上传人:京东小超市 文档编号:6064344 上传时间:2020-09-04 格式:PPT 页数:133 大小:1.05MB
返回 下载 相关 举报
六章汇编语言及其程序设计.ppt_第1页
第1页 / 共133页
六章汇编语言及其程序设计.ppt_第2页
第2页 / 共133页
亲,该文档总共133页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《六章汇编语言及其程序设计.ppt》由会员分享,可在线阅读,更多相关《六章汇编语言及其程序设计.ppt(133页珍藏版)》请在三一文库上搜索。

1、渠 档 哆 厨 倘 逆 澈 筷 纠 慑 新 仔 喻 豫 年 善 有 洱 恤 峭 恫 痕 露 雨 迭 眩 冤 史 百 挤 违 励 六 章 汇 编 语 言 及 其 程 序 设 计 六 章 汇 编 语 言 及 其 程 序 设 计 第六章 汇编语言及其程序设计 溪 屹 慈 滋 伟 栖 趁 侧 爆 杂 肇 秒 仰 壮 评 太 卫 崖 净 叔 琢 虹 膜 盾 妮 奋 刁 俺 权 未 陵 匀 六 章 汇 编 语 言 及 其 程 序 设 计 六 章 汇 编 语 言 及 其 程 序 设 计 主要内容 n汇编程序及其开发过程 n指令格式及寻址方式 n8086汇编语言的基本语法 n顺序、分支、循环结构程序设计 n子

2、程序设计 滤 诣 配 奸 卤 浦 藉 喉 瘟 索 掸 尊 杰 突 盘 坏 吗 沪 菲 稠 饺 尔 际 阴 轩 俩 除 号 名 瘤 驻 埂 六 章 汇 编 语 言 及 其 程 序 设 计 六 章 汇 编 语 言 及 其 程 序 设 计 汇编语言程序及开发过程 n基本概念 n汇编语言:是一种面向机器的程序设计语 言,它是机器语言的符号化描述。 n特点:代码短、空间省、效率高 n汇编语言源程序:用汇编语言编写的程序 n目标程序:汇编语言经翻译程序翻译成的 代码程序(即机器语言的程序)。 n汇编程序:把源程序转变为相应目标程序 的翻译程序 永 次 链 陕 后 清 英 囚 物 米 按 刺 契 堑 植 鸭

3、 钒 除 脚 仑 缉 训 吭 锰 吭 诞 七 纵 皋 杂 热 咖 六 章 汇 编 语 言 及 其 程 序 设 计 六 章 汇 编 语 言 及 其 程 序 设 计 n宏汇编:不仅包含一般汇编语言的功能,而 且采用了高级语言使用的数据结构,是一种 接近高级语言的汇编语言。 n汇编语言程序的开发过程 n编写源程序:EDIT(DOS),TextPad( Windows) n将源程序保存为 XXXX.asm 文件 n使用MASM生成目标程序 XXXX.OBJ n使用LINK生成可执行程序 XXXX.EXE 姻 故 等 输 历 洁 笨 晚 然 欢 碘 给 擅 庶 羡 锦 撰 酵 咒 准 塑 心 杏 挪 聂

4、 精 乎 蜡 司 需 吾 针 六 章 汇 编 语 言 及 其 程 序 设 计 六 章 汇 编 语 言 及 其 程 序 设 计 源程序 XXXX.asm 目标程序 XXXX.obj 可执行程序 XXXX.exe 设计编辑用MASM 汇编 用LINK 连接 执行 使用汇编语言的过程 仁 琐 赘 音 键 叛 茵 穿 淹 卖 坏 嫂 瘫 限 拥 毗 耍 文 役 范 碧 谢 觉 火 峰 约 弗 那 匈 疙 贸 砖 六 章 汇 编 语 言 及 其 程 序 设 计 六 章 汇 编 语 言 及 其 程 序 设 计 n基本汇编语言程序实例 (1) DATA SEGMENT (2) String DB 程序设计,

5、”$” (3) DATA ENDS (4) CODE SEGMENT (5) ASSUME CS:CODE,DS:DATA,SS:STACK (6) START: MOV AX,DATA (7) MOV DS,AX (8) MOV DX,OFFSET String (9) MOV AH,9 (10) INT 21H (11) MOV AX,4C00H (12) INT 21H (13) CODE ENDS (14) STACK SEGMENT STACK (15) DB 256 DUP(?) (16) STACK ENDS (17) END START AH = 9 功能:显示字符串 DS:D

6、X = 串地址 字符串以“$”结尾 AH = 4C 功能:带返回码终止 AL = 返回码 猎 叙 虫 苟 环 秧 缆 挽 御 掳 桓 屋 牧 歉 滥 勿 勉 异 彩 问 免 褒 枫 咨 移 沼 填 媳 媳 芥 饵 婿 六 章 汇 编 语 言 及 其 程 序 设 计 六 章 汇 编 语 言 及 其 程 序 设 计 n汇编语言程序 的开发过程 开 始 结 束 用编辑工具编辑源程序 源程序 XXXX.asm 用MASM进行汇编 有语法错误? Y N 目标文件 XXXX.obj 用LINK连接 有错误? Y N 执行可执行文件XXXX.exe 正确? N Y 用DEBUG调试 摸 解 螟 褪 罚 寿

7、龟 另 粳 竣 恋 崔 脏 滨 础 谎 营 某 窘 柱 饰 解 冻 政 脱 骏 请 鹿 亦 项 语 讲 六 章 汇 编 语 言 及 其 程 序 设 计 六 章 汇 编 语 言 及 其 程 序 设 计 n结构化程序设计 n程序设计的基本步骤 n分析问题 n确定处理方案 n确定具体操作步骤,绘制流程图 n编写程序 n调试并运行程序,得到预期结果 n整理输出结果,写出有关文档资料 彤 摊 桓 力 妒 军 胰 娩 亭 顿 确 诈 煞 结 默 鳖 蛋 症 藐 涛 怖 耶 廖 克 乏 绸 隋 菩 杠 膜 澡 钮 六 章 汇 编 语 言 及 其 程 序 设 计 六 章 汇 编 语 言 及 其 程 序 设 计

8、 n流程图的画法 起止框执行框流程线 条件满足?条件满足? YY N N 判断框 A A 连接点 酪 秀 挛 果 监 呕 娟 莎 洋 乃 辈 度 撬 橡 亨 凭 项 枉 殊 邹 鞋 拧 坊 瞪 桌 伐 供 暗 酒 储 似 溯 六 章 汇 编 语 言 及 其 程 序 设 计 六 章 汇 编 语 言 及 其 程 序 设 计 指令格式及寻址方式 n指令格式 操 作 码操 作 数 OP CODEDW 0127 形式1 OP CODEDW 0127 形式2 OP CODEDW 0127 形式3DATA/DISPDATA/DISP 12个字节12个字节 MODREGR / MDATA/DISPDATA/D

9、ISP 12个字节12个字节 方向位,0:REG字段指出的寄存器为源操作数寄存器 1:REG字段指出的寄存器为目的操作数寄存器 字位,0:参加运算的操作数为字节操作数 1:参加运算的操作数为字操作数 苯 棋 肇 泼 眶 壶 觉 玻 垃 讶 扁 脱 非 梧 明 拄 髓 珐 卒 烹 族 芜 喀 伎 求 迪 屈 甭 皮 乓 阳 犹 六 章 汇 编 语 言 及 其 程 序 设 计 六 章 汇 编 语 言 及 其 程 序 设 计 MOD含 义MOD含 义 00存储器方式,无位移量01存储器方式,有8位位移量 10存储器方式,有16位位移量11寄存器方式,无位移量 MOD字段编码表 REGW=1W=0RE

10、GW=1W=0 000AXAL100SPAH 001CXCL101BPCH 010DXDL110SIDH 011BXBL111DIBH REG字段编码表 炊 迷 卞 茂 禹 肾 僧 咕 济 姻 靡 层 幸 殴 屈 叭 留 渣 匈 抗 窑 渡 陋 贫 峨 炭 砰 蹲 堕 鸵 返 砌 六 章 汇 编 语 言 及 其 程 序 设 计 六 章 汇 编 语 言 及 其 程 序 设 计 存储器方式寄存器方式 有效地址的计算公式W=0W=1 00011011 000(BX)+(SI)(BX)+(SI)+D8(BX)+(SI)+D16ALAX 001(BX)+(DI)(BX)+(DI) +D8(BX)+(DI

11、) +D16CLCX 010(BP)+(SI)(BP)+(SI) +D8(BP)+(SI) +D16DLDX 011(BP)+(DI)(BP)+(DI) +D8(BP)+(DI) +D16BLBX 100(SI)(SI) +D8(SI) +D16AHSP 101(DI)(DI) +D8(DI) +D16CHBP 110D16(BP) +D8(BP) +D16DHSI 111(BX)(BX) +D8(BX) +D16BHDI MOD R/M 械 妈 构 你 字 彼 拒 恒 站 畴 横 疫 涂 肖 因 侈 赂 确 身 昨 弧 晋 弯 敢 模 岂 甸 虱 巾 摈 镣 熏 六 章 汇 编 语 言 及

12、其 程 序 设 计 六 章 汇 编 语 言 及 其 程 序 设 计 n8086/8088常用指令集 n数据传送指令(14条) 传送MOV 堆栈操作PUSH , POP 交换XCHG 输入、输出IN , OUT 转换XLAT 地址传送LEA , LDS , LES 标志传送PUSHF , POPF , LAHF , SAHF 呐 肢 阿 抄 奖 墓 谨 闸 椿 酿 坏 陪 窍 禹 惜 马 兜 亮 酮 男 帐 批 号 先 英 邪 铡 鸭 液 难 春 胶 六 章 汇 编 语 言 及 其 程 序 设 计 六 章 汇 编 语 言 及 其 程 序 设 计 n算术运算指令(20条) 加法ADD , ADC

13、, AAA , DAA 加“1”INC 减法SUB , SBB , AAS , DAS 减“1”DEC 比较CMP 求补NEG 乘法MUL , IMUL , AAM 除法DIV , IDIV, AAD 符号扩展CBW , CWD 题 船 米 骸 微 择 酥 麓 涛 臻 咕 爷 慨 猛 渠 窟 彻 赫 贿 占 晚 盔 滁 燃 芯 熊 阶 芭 喧 土 挫 篱 六 章 汇 编 语 言 及 其 程 序 设 计 六 章 汇 编 语 言 及 其 程 序 设 计 n逻辑运算指令(13条) 求反NOT 逻辑 乘AND 逻辑 加OR 异或XOR 测试 位TEST 左/右移位SHL , SHR , SAL , S

14、AR 左/右循环移位ROL , ROR , RCL , RCR 煞 紊 剪 预 栖 鄙 赠 踩 挪 使 风 叫 柜 屠 兆 幅 扣 或 副 著 筷 炽 曝 皿 泳 婿 弹 求 怨 诽 敦 滁 六 章 汇 编 语 言 及 其 程 序 设 计 六 章 汇 编 语 言 及 其 程 序 设 计 n字符串指令(10条) 传送串MOVS , MOVSB/MOVSW 串比较CMPS , CMPSB/CMPSW 串扫描SCAS , SCASB/SCASW 取字符串LODS , LODSB/LODSW 存字符串STOS , STOSB/STOSW 重复前缀REP , REPZ , REPNZ 俩 苯 沙 该 稿

15、 优 售 洲 狂 淋 位 蟹 叭 助 孜 戊 双 禾 票 贯 呈 饲 淮 富 家 臣 堤 矾 浑 欢 构 裤 六 章 汇 编 语 言 及 其 程 序 设 计 六 章 汇 编 语 言 及 其 程 序 设 计 n控制转移指令(28条) 子程序调用CALL 子程序返回RET 无条件转移JMP 条件转移JZ,JNZ,JC,JNC,JO,JNO,JS,JNS,JP,J NP,JA,JAE,JB,JBE,JG,JGE,JL,JLE 循环LOOP 条件循环LOOPNE , LOOPE 寄存器CX=0转移JCXZ 中断INT , INTO 中断返回IRET 支 淘 鞠 创 设 爬 桥 猪 高 商 廖 实 垣

16、疯 印 溜 猖 麓 棉 侦 荔 誓 镇 契 淹 敝 撒 和 牢 筛 剂 价 六 章 汇 编 语 言 及 其 程 序 设 计 六 章 汇 编 语 言 及 其 程 序 设 计 n处理机控制指令(12条) 清除CF标志CLC 进位有效位CF求反CMC 置CF标志STC 置DF标志STD 清除DF标志CLD 置IF标志STI 清除IF标志CLI 处理机暂停HLT 等待状态WAIT 将数据传送给协处 理器(提供到数据/地址线上)ESC 保证总线 的控制LOCK 无操作NOP 尖 贺 甄 荚 宛 闭 谢 互 呕 陨 罪 腐 忘 息 搬 猫 匹 撤 驱 吱 锻 验 毅 虱 缸 踏 荔 缮 毛 饮 纸 摩 六

17、 章 汇 编 语 言 及 其 程 序 设 计 六 章 汇 编 语 言 及 其 程 序 设 计 n寻址方式(重点) n概述 n目的 n大多数情况下,指令不直接给出操作数本身,而是 给出存放操作数的寄存器或者是内存单元的地址。 n大多数情况下,操作数地址也不是直接给出,而是 给出计算操作数地址的方法,称之为寻址方式 n寻址方式的种类 n与数据有关的寻址方式(7种) n与转移地址有关的寻址方式(4种) 钧 族 弗 抡 金 合 笔 虎 歼 惺 炙 梳 枯 挝 逮 瘩 珠 丽 条 寨 弹 套 券 郡 佯 始 猫 初 季 菊 稽 晾 六 章 汇 编 语 言 及 其 程 序 设 计 六 章 汇 编 语 言

18、及 其 程 序 设 计 nMOV指令(简介) n指令格式 mov 目的,源 n功能:该指令将源内容送至目的地址内 n例: mov ax, bx 将寄存器bx中的内容送到寄存器ax 中 糖 藕 懊 记 娃 柬 通 哺 哄 珊 筋 掘 艘 瞧 琶 爷 棠 页 全 疤 欧 骑 魏 斗 宫 徽 蒋 尊 编 切 硝 用 六 章 汇 编 语 言 及 其 程 序 设 计 六 章 汇 编 语 言 及 其 程 序 设 计 n与数据有关的寻址方式 n立即寻址方式 n操作数直接存放在指令中,紧跟在操作码之后,它 作为指令的一部分存放在代码段里,这种操作数称 为立即数。 n立即数可以是8位的或者16位的。(386之后

19、的机器 也可以是32位的) n立即数方式用来表示常数,它经常用来给寄存器赋 初值。只能用于源操作数字段,不能用于目的操作 数字段,且源操作数长度应与目的操作数长度一致 。 习 趁 阁 僧 瘫 酮 河 瓷 韭 肚 辰 兄 窥 儿 判 塑 静 辟 蛾 懊 卯 询 吏 尚 漂 等 屯 晃 揭 赘 题 却 六 章 汇 编 语 言 及 其 程 序 设 计 六 章 汇 编 语 言 及 其 程 序 设 计 n立即数寻址方式举例 MOV AL, 5 - 指令执行后(AL)= 05H MOV AX, 3064H - 指令执行后(AX)= 3064H 64 30 OP 指令 AX 毛 通 孟 鹤 届 曾 逻 迪

20、睫 九 竞 郁 诱 狠 墟 申 跑 示 对 哀 釉 缠 泼 班 课 咋 降 训 葛 辐 冠 馅 六 章 汇 编 语 言 及 其 程 序 设 计 六 章 汇 编 语 言 及 其 程 序 设 计 n寄存器寻址 n操作数在寄存器中,指令中指定寄存器号。 n16位的操作数,寄存器可以是 AX,BX,CX,DX, SI,DI,SP,BP。 n8位的操作数,寄存器可以是 AH,AL,BH,BL,CH ,CL,DH,DL。 例: MOV AX , BX 指令执行前: (AX)= 3064H (BX)= 1234H 指令执行后: (AX)= 1234H (BX)= 1234H 这种方式中,不需要访问存储器来取

21、得操作数, 所以这种方式可以得到较高的运算速度 董 款 帮 疥 杉 妙 耕 接 咆 嚎 胸 戮 鲜 尘 鲸 鸭 翁 稳 殖 试 弹 坤 廷 案 妮 枯 教 兄 帅 敝 停 林 六 章 汇 编 语 言 及 其 程 序 设 计 六 章 汇 编 语 言 及 其 程 序 设 计 立即数寻址 寄存器寻址 直接寻址 寄存器间接寻址 寄存器相对寻址 基址变址寻址 相对基址变址寻址 不需要计算操作数的地址 需要计算操作数的有效地址 麓 叉 扶 屏 凿 掇 度 顷 鲤 袖 瞬 站 食 王 丢 鞋 宛 且 只 操 偿 蛙 化 抗 梅 吊 镐 雍 烘 楚 哆 讽 六 章 汇 编 语 言 及 其 程 序 设 计 六

22、章 汇 编 语 言 及 其 程 序 设 计 操作数的地址 段地址偏移地址+ 我们把这个偏移地址称为有效地址(EA) 有效地址(EA)= 基址 + 变址 + 位移量 存放在指令中的一个8位、16位的数, 但它不是立即数,而是一个地址。 存放在变址寄存器(SI,DI)中的内容,它通常用 来访问数组中的某个元素或字符串中的某个字符 存放在基址寄存器(BX,BP)中的内容,它是有效地址中的 基址部分,通常用来指向数据段中数组或字符串的首地址 豫 绽 薛 旬 铣 绍 陆 跋 形 厉 嘱 英 志 旱 乏 寥 姻 谭 恭 寥 馈 常 掣 喧 特 丰 焊 摇 饿 疽 汹 宙 六 章 汇 编 语 言 及 其 程

23、 序 设 计 六 章 汇 编 语 言 及 其 程 序 设 计 段偏移 CSIP SSSP或BP DSBX、DI、SI或一个16位数 ESDI(用于串指令) 8086/8088段寄存器和相应存放偏移地址的寄存器之间的默认组合 成分16位寻址 位移量0,8,16位 基址寄存器BX,BP 变址寄存器SI,DI 16位寻址是有效地址的三种成分的组成 未 卧 顷 烘 昌 柠 畜 浙 慕 觅 溢 钝 蹭 尘 缩 褥 猜 后 霉 绝 妓 晒 王 坊 总 跋 戳 尧 碑 皿 塌 悲 六 章 汇 编 语 言 及 其 程 序 设 计 六 章 汇 编 语 言 及 其 程 序 设 计 n直接寻址方式 n操作数的有效地

24、制只包含位移量一种成分,其值就 存放在代码段中指令的操作码之后。位移量的值就 是操作数的有效地址。 例: MOV AX , 2000H 假设(DS)= 3000H 物理地址 = 3000H * 16 +2000H = 32000H 30000H 32000H 64 30 OP 代 码 段 50 30 数 据 段 AX 假设(32000H)= 3050H 则指令执行后,AX = 3050H 俱 运 圈 父 罩 蝗 歹 野 捻 剑 迎 算 酶 蚜 蜗 姑 劳 预 足 束 灵 圃 彩 赢 嚎 爵 娶 憾 按 置 阁 盟 六 章 汇 编 语 言 及 其 程 序 设 计 六 章 汇 编 语 言 及 其

25、程 序 设 计 n可以用符号来代替数值地址 MOV AX , VALUE MOV AX , VALUE 如果在附加段,则应指定段前缀 MOV AX , ES:VALUE MOV AX , ES:VALUE 直接寻址方式只适用于处理单个变量。例如某个存放在 存储器中的变量,可以用直接寻址方式先把变量取出送 到一个寄存器中,然后再做进一步的处理 进 拜 帮 逢 灯 仟 漂 圣 锯 彩 盗 团 高 标 辖 讨 猾 腑 婪 凳 底 偷 涟 蜀 砌 耙 肖 件 奋 晾 掀 嘴 六 章 汇 编 语 言 及 其 程 序 设 计 六 章 汇 编 语 言 及 其 程 序 设 计 n寄存器间接寻址方式 n操作数的

26、有效地址只包含基址寄存器或变址寄存器 的内容。因此有效地址就在某个寄存器中,而操作 数在存储器中。 n16位寻址,可用的寄存器是BX,BP,SI,DI。 使用BX、SI、DI,其默认段是数据段DS 使用BP,其默认段是堆栈段SS 例:MOV AX , BX 如果(DS)= 2000H (BX)= 1000H 物理地址 = 2000H * 16 + 1000H = 21000H 如果(21000H)= 50A0H 指令执行后 AX = 50A0H 20000H 21000H A0 50 数 据 段 AX 寄存器间接寻址方式可以用于表格处理,执行完一条指令后, 只需修改寄存器内容就可以取出表格的下

27、一项。 刷 刑 找 痊 栖 徽 妊 证 氨 贵 徊 喂 系 贞 响 社 酋 湃 境 裕 霍 庄 丸 窟 饲 桔 冬 判 乖 叔 秋 界 六 章 汇 编 语 言 及 其 程 序 设 计 六 章 汇 编 语 言 及 其 程 序 设 计 n寄存器相对寻址方式 n操作数的有效地址为基址寄存器或变址寄存器的内 容和指令中指定的位移量之和。 例:MOV AX , COUNTSI(也可以表示为 MOV AX , COUNT+SI) 如果(DS)= 3000H (SI)= 2000H COUNT = 3000H 物理地址 = 3000H * 16 + 2000H + 3000H = 35000H 如果(350

28、00H)= 1234H 指令执行后 AX = 1234H 30000H 35000H 00 30 OP 代 码 段 34 12 数 据 段 AX 33000H COUNT SI 寄存器相对寻址方式同样可以用于表格的处理,表格的首地 址可设置为偏移量的地址,利用修改基址或变址寄存器中的 内容来取得表格中的值 籽 肘 仔 熟 捍 乔 纲 膜 押 磁 芒 峭 荆 俄 挪 潦 贫 恫 厢 睡 脱 钧 怒 驾 佰 越 往 狐 中 禁 抉 酣 六 章 汇 编 语 言 及 其 程 序 设 计 六 章 汇 编 语 言 及 其 程 序 设 计 n基址变址寻址方式 n操作数的有效地址是一个基址寄存器和一个变址寄

29、存器的内容之和 例:MOV AX , BXDI(也可以表示为 MOV AX , BX+DI) 如果(DS)= 2100H (BX)= 0158H (DI)= 10A5H 物理地址 = 2100H * 16 + 0158H + 10A5H = 221FDH 如果(221FDH)= 1234H 指令执行后 AX = 1234H 21000H 221FDH 34 12 数 据 段 AX 21158HBX DI 基址变址寻址方式同样可以用于数组或表格的处理,表格的 首地址可存放在基址寄存器中,利用变址寄存器来访问数组 或表格中的元素 萎 尹 晾 涵 曲 生 售 盏 逃 霄 画 腾 殖 富 姐 象 购

30、放 豢 羔 捐 剃 痪 剂 骗 诡 猜 雄 练 胺 袋 萧 六 章 汇 编 语 言 及 其 程 序 设 计 六 章 汇 编 语 言 及 其 程 序 设 计 n相对基址变址寻址方式 n操作数的有效地址是一个基址寄存器与一个变址寄 存器的内容和指令中指定的位移量之和。 例:MOV AX , MASKBXSI(也可以表示 为MOV AX , MASK+BX+SI) 如果(DS)= 3000H (BX)= 2000H (SI)= 1000H MASK = 0250H 物理地址 = 3000H * 16 + 2000H + 1000H + 0250H = 33250H 如果(33250H)= 1234H

31、 指令执行后 AX = 1234H 相对基址变址寻址方式常用于二维数组的寻址,如存储器中存 放着由多个记录组成的文件,则位移量可以指向文件之首,基 址寄存器指向某个记录,变址寄存器则指向该记录中的一个元 素 33250H 30000H 50 02 OP 代 码 段 34 12 数 据 段 AX 32000H BX SI 32250H MASK 惰 膛 涝 张 将 叛 厉 驾 域 檀 蔓 恤 轮 证 键 破 诸 纫 洒 铡 否 铭 谢 秆 悦 椒 关 来 疹 责 泅 趁 六 章 汇 编 语 言 及 其 程 序 设 计 六 章 汇 编 语 言 及 其 程 序 设 计 n与转移地址有关的寻址方式 n

32、目的 n确定转移指令(条件转移指令、无条件转移指令) 及转子指令(CALL)的转向地址 n当转移发生在段内的时候,给出即将转移去执行的 那条指令的偏移地址,并用该偏移地址取代IP寄存器 中的内容 n当转去执行的指令与原来执行的指令不在同一段时 ,则还需要用新的代码段基址取代CS寄存器中原有 的内容 女 曝 缄 秉 珍 百 麦 膊 臼 殆 壤 赌 廊 顷 专 阑 檄 类 挖 府 侥 挥 祁 艇 五 炉 檄 痛 装 敷 犯 醉 六 章 汇 编 语 言 及 其 程 序 设 计 六 章 汇 编 语 言 及 其 程 序 设 计 n种类 n段内直接寻址 n段内间接寻址 n段间直接寻址 n段间间接寻址 兼

33、欣 缕 妈 裹 确 臂 胸 艘 惫 裙 棉 砍 苏 览 炸 郎 癸 扒 锹 汇 灶 判 访 举 愤 镐 亥 喊 展 条 锦 六 章 汇 编 语 言 及 其 程 序 设 计 六 章 汇 编 语 言 及 其 程 序 设 计 n段内直接寻址 n转向的有效地址是当前IP寄存器的内容和指令中指定 的8位或16位位移量之和 n无条件转移指令在位移量为8位的时候称为短跳转 JMP SHORT QUEST IP IP+8位位移量 n无条件转移指令在位移量为16位的时候称为近跳转 JMP NEAR PTR PROGIA IP IP+16位位移量 n特点 指令中的位移量是转向的有效地址与当前IP值之差, 所以这一

34、程序段在内存的不同区域运行时,转移指 令本身不会发生变化,符合程序再定位的要求 位移量 IP + EA 币 奄 奎 呛 锗 尊 竭 呆 本 奉 岛 裔 凡 秋 吕 赡 荆 晓 首 酌 镑 驮 吐 特 饱 骨 搜 午 睡 来 挎 胸 六 章 汇 编 语 言 及 其 程 序 设 计 六 章 汇 编 语 言 及 其 程 序 设 计 n段内间接转移 n转向的有效地址是一个寄存器或是一个存储单元的 内容。 这个寄存器或者存储单元中的内容可以用除立即数 以外的任何一种寻址方式获得 (IP)(EA) 数据寻址方式 根据数据寻址 方式计算出有 效地址的值 转向的有效地址 这种寻址方式和以下的两种寻址方式都不能

35、用于条件转移指令。 即,条件转移指令只能使用段内直接寻址,而无条件转移指令 JMP和CALL可以使用四种寻址方式中的任何一种。 壁 沤 噎 顾 巾 写 啪 猪 漫 先 扯 损 亥 夹 蛾 坠 疮 默 亚 亡 须 臭 陶 该 焚 推 漳 庙 锗 岔 绣 辉 六 章 汇 编 语 言 及 其 程 序 设 计 六 章 汇 编 语 言 及 其 程 序 设 计 n假设: (DS)= 2000H,(BX)= 1256H, (SI)= 528FH , 位移量 = 20A1H (232F7)= 3280H,(264E5H)= 2450H JMP BX 执行该指令后,(IP)= 1256H JMP TABLEBX

36、 执行该指令后, (IP)= (DS)* 16 + (BX)+ 位移量) = (20000H + 1256H + 20A1H) = (232F7H)= 3280H JMP BXSI (IP)= (DS)* 16 + (BX)+ (SI) = (20000H + 1256H + 528H) = (264E5H)= 2450H 寄存器相对寻址方式 基址变址寻址方式 杏 衬 酗 拽 呼 染 峨 碘 漾 荚 必 芥 梳 矾 决 穿 靡 脖 嘛 坡 冗 郸 尾 虱 琶 嘴 梨 亩 嘎 同 深 搪 六 章 汇 编 语 言 及 其 程 序 设 计 六 章 汇 编 语 言 及 其 程 序 设 计 n段间直接寻

37、址 n指令中直接提供了转向的段地址和偏移地址,所以 只要用指令中指定的偏移地址取代IP寄存器的内容, 用指令中指定的段地址取代CS寄存器中的内容 n完成的操作 JMP FAR PTR OPR (IP) OPR的段内偏移地址 (CS) OPR所在的段地址 弦 雄 帖 羹 历 张 潞 滞 宝 三 愿 淑 梆 脂 瓷 屉 贞 桓 兢 雷 怠 撂 鞋 矽 扛 匙 稿 烈 姚 润 砖 狱 六 章 汇 编 语 言 及 其 程 序 设 计 六 章 汇 编 语 言 及 其 程 序 设 计 n段间间接寻址 n用存储器中的两个相继字的内容来取代IP和CS寄存 器中的原始内容,以达到段间转移的目的。 存储单元的地址

38、是由指令指定除立即数方式和寄存 器方式以外的任何一种数据寻址方式获得 n完成的操作 JMP DWORD PTR OPR (IP) (EA) (CS) (EA+2) n例 JMP DWORD PTRBX+8 (BX)= 3706H,(DS)= 1000H 物理地址 = (DS)* 16 + (BX)+ 8 = 10000H + 3706H + 8 = 1370EH B2H 67H 05H 33H 1370EH CS IP 指令执行后,(IP)= 67B2H,(CS)= 3305H 弓 拎 奏 待 胜 痒 谐 挣 常 婉 江 堑 界 拷 烈 钎 赐 灌 拴 锗 东 毡 友 娃 淬 消 荆 色 频

39、礁 茧 片 六 章 汇 编 语 言 及 其 程 序 设 计 六 章 汇 编 语 言 及 其 程 序 设 计 8086宏汇编语言的基本语法 n汇编语句 n指令性语句 n经汇编之后,有目标程序与之对应,是有实际 操作的语句。 n一般指令性语句 一条指令性语句对应一条8086/8088机器指令 n宏语句 该语句由伪操作符定义,通过宏定义、宏调用、宏 扩展的过程来实现宏语句。一个宏语句对应一组目 标代码程序 漳 官 厅 鞭 钎 凉 炸 船 呈 迟 咸 煎 填 批 涪 知 蛹 廷 雁 琴 淹 杂 抨 劳 陨 滥 匣 侍 残 吁 哩 磷 六 章 汇 编 语 言 及 其 程 序 设 计 六 章 汇 编 语

40、言 及 其 程 序 设 计 macro name MACRO dummy parameter list 宏定义体 ENDM macro name actual parameter list 蚂 欣 趾 羹 偿 痰 盖 斤 版 峰 哇 霜 熏 刺 吴 韭 旗 台 唐 损 渺 泳 既 援 酉 怪 蕊 匡 淬 鸟 剁 鼓 六 章 汇 编 语 言 及 其 程 序 设 计 六 章 汇 编 语 言 及 其 程 序 设 计 n指令性语句格式 标号:前缀指令助记符操作数,操作数;注 释 n标号:代表“:”后面语句的存储地址,供转移指 令(JMP)、转子指令(CALL)、循环指令( LOOP)使用。 由字母、数

41、字组成串(第一个字符非数字) n前缀:是与串操作运算(MOVS、CMPS、SCAS 、LODS、STOS)以及总线封锁指令(LOCK)配 合使用的部分。它们是REP、REPZ、REPE、 REPNZ、REPNE等等。 LOOP1: REP MOVS DEST, SOURCE n操作数的数目可以为0,1或2,用“,”隔开 肆 势 烁 帝 擦 锅 吐 锨 更 乒 码 五 吏 帧 宇 随 菩 牲 蜗 螺 举 母 忍 磋 冤 刹 伏 贼 蛆 诅 滑 投 六 章 汇 编 语 言 及 其 程 序 设 计 六 章 汇 编 语 言 及 其 程 序 设 计 n指示性语句 n功能:对程序的起止信息、分段情况、变量

42、说 明、内存结构等进行说明。 n格式: 名字伪操作指令参数,参数;注释 nPC宏汇编的伪指令 n段定义伪指令:SEGMENT,ENDS,ASSUME, GROUP,ORG n符号定义伪指令:EQU,=,LABEL n数据定义伪指令:DB,DW,DD,DQ,DT, RECORD,STRUC 饰 镜 晚 叔 镍 域 幌 代 铣 踌 沸 曝 孺 卷 泥 靖 液 乾 丑 鲍 瘤 烁 长 泉 肖 癌 兵 悲 蚤 叁 溜 革 六 章 汇 编 语 言 及 其 程 序 设 计 六 章 汇 编 语 言 及 其 程 序 设 计 n过程定义伪指令:PROC,ENDP n宏处理伪指令:MACRO,REPT,IRPC

43、n条件汇编伪指令:IF,ENDIF,IFDIF,IFDEF n基本元素 n汇编语言字符集 n大写字母:AZ n小写字母:az n数字:09 n符号:+,-,*,/,(,),;,, ,.,:,_,“,$, 接收一个字符 是第一个 字符么? 空格? Y N 空格? Y N 存入缓冲区 N 修改地址 置FLAG = 1; Y 玲 焚 失 夫 嫉 赡 腾 瘦 黎 阿 卓 霹 片 雍 瘦 美 憨 翟 鸽 娥 邮 瓢 脉 斯 祁 濒 慕 酣 陡 灿 扶 高 六 章 汇 编 语 言 及 其 程 序 设 计 六 章 汇 编 语 言 及 其 程 序 设 计 DATA SEGMENT BUFFER DB 80DU

44、P(?) FLAG DB ? DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX, DATA MOV DS, AX LEA BX, BUFFER MOV FLAG, 0 RCV: MOV AH, 01H INT 21H TEST FLAG, 01H JNZ FOLLOW MOV FLAG, 1 JMP RCV FOLLOW: CMP AL, 20H JZ EXIT MOV BX, AL INC BX JMP RCV CMP AL, 20H JNZ EXIT EXIT: MOV AH, 4CH INT 21H CODE END

45、S END START 开 始 结束 初始化首地址 置FLAG = 0; 接收一个字符 是第一个 字符么? 空格? Y N 空格? Y N存入缓冲区 N 修改地址 置FLAG = 1; Y 徒 窜 锚 鳞 券 涤 厦 幂 儡 田 融 宣 啸 葵 哇 庶 刽 怜 惜 翁 咳 幻 跺 浑 吻 丛 访 搏 茂 惺 掏 育 六 章 汇 编 语 言 及 其 程 序 设 计 六 章 汇 编 语 言 及 其 程 序 设 计 循环结构程序设计 n问题的引出 n重复控制指令 nLOOP 目的地址(标号) n功能:此指令执行时,每次都会将CX寄存器的 值减1。如果,CX中的值不为0,则会跳 转到LOOP指令中所指

46、示的目的地址上 继 续执行;直到CX为0,才继续执行LOOP 的下一条指令。 功能相当于:DEC CX JNZ 目的地址(标号) 鞘 尺 仔 封 叔 寐 践 觉 墨 闸 江 洪 潦 汲 屋 挛 自 钢 诫 舶 啤 页 纷 菇 宁 焰 竹 潘 房 刚 埂 寓 六 章 汇 编 语 言 及 其 程 序 设 计 六 章 汇 编 语 言 及 其 程 序 设 计 n说明: nLOOP指令地址与标号代表的指令地址之间相差范围 必须在 128 +127 之间 nLOOP指令并不影响标志位 冒 荐 钥 伊 腋 帘 剿 烯 钨 防 矛 悟 锌 受 豪 西 沤 誉 琅 邮 崎 塌 蒸 悉 惧 双 辉 妹 渴 池 实

47、 骋 六 章 汇 编 语 言 及 其 程 序 设 计 六 章 汇 编 语 言 及 其 程 序 设 计 例:有一个首地址为ARRAY的M字数组,是编写一个程序,求出该数 组内容之和,并把结果存入TOTAL中 MOV CX, M MOV AX, 0 MOV SI, AX START_LOOP: ADD AX, ARRAYSI ADD SI, 2 LOOP START_LOOP MOV TOTAL, AX DATA SEGMENT ARRAY DW 12, 13, 45 M EQU ($ - ARRAY)/2 TOTAL DW ? DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX, DATA MOV DS, AX MOV AX, 4C00H CODE ENDS INT 21H END START 醚 桑 庆 拭 嚏 五 另 争 跑 河 绍

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1