计算机组成原理与汇编语言程序设计.ppt

上传人:京东小超市 文档编号:5903706 上传时间:2020-08-14 格式:PPT 页数:86 大小:365KB
返回 下载 相关 举报
计算机组成原理与汇编语言程序设计.ppt_第1页
第1页 / 共86页
计算机组成原理与汇编语言程序设计.ppt_第2页
第2页 / 共86页
亲,该文档总共86页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《计算机组成原理与汇编语言程序设计.ppt》由会员分享,可在线阅读,更多相关《计算机组成原理与汇编语言程序设计.ppt(86页珍藏版)》请在三一文库上搜索。

1、谐 岿 逃 串 徐 菠 瓮 蕾 顺 钞 佑 拍 问 墩 砧 吃 紊 怂 久 凉 洽 帮 航 舍 苏 裤 某 蛹 盛 逗 驹 抚 计 算 机 组 成 原 理 与 汇 编 语 言 程 序 设 计 计 算 机 组 成 原 理 与 汇 编 语 言 程 序 设 计 计算机组成原理与汇编语言程序 设计 第5章 慨 队 哺 帽 巡 惊 痹 诣 罐 隙 叠 抓 峻 襟 薛 颈 太 牙 施 瑶 丢 感 设 集 厢 额 煽 狡 丢 定 再 疥 计 算 机 组 成 原 理 与 汇 编 语 言 程 序 设 计 计 算 机 组 成 原 理 与 汇 编 语 言 程 序 设 计 UCB Spring 2005 五、汇编语言

2、程序设计 v重点章节 1掌握:常用汇编语言语句、伪指令、源程序的一般 结构,顺序程序设计,分支程序设计,简单循环程序设 计,子程序设计;能够读写常用汇编语句编写的程序段 。 2理解:宏操作伪指令,系统功能调用。 3了解:汇编语言程序的开发方法。 沼 池 破 卵 乾 被 晾 杂 身 梦 烃 靳 闺 构 孟 扑 置 为 园 牢 郭 贾 腥 影 压 瘟 垒 寅 矾 鹃 冻 皑 计 算 机 组 成 原 理 与 汇 编 语 言 程 序 设 计 计 算 机 组 成 原 理 与 汇 编 语 言 程 序 设 计 五、汇编语言程序设计 v 汇编语言程序是符号化的机器语言,汇编语言必须经过“汇编”(即 翻译)转换

3、成机器语言指令代码,再由计算机识别并执行。 v 汇编语言源程序 目标程序 v 汇编语言源程序的基本组成单位是语句。 v 源程序中使用的语句有三种: 指令语句、伪指令语句和宏指令语句(或称宏调用语句) v 5.1概述 v 5.2汇编语言语句 v 一、指令语句格式 指令语句的一般格式如下: 标号:指令助记符 操作数 ;注释 1标号:标号是机器指令语句存放地址的符号表示,代表该指令 目标代码的第一个字节地址,后面必须紧跟冒号“:” ,在指令语句 中,是任选字段。 2指令助记符:指令助记符为语句的核心成分,表示了该语句的 操作类型。 汇编程序 操作数的有无、有几个 ,取决于指令助记符 翻译后,没有对

4、应的目标代码 曝 涧 琼 韧 俐 龟 赎 错 鸳 练 偷 本 捻 蚤 熊 鸡 苑 岸 愁 洽 杉 涨 括 蝗 庇 药 侮 嚼 泞 畦 责 赎 计 算 机 组 成 原 理 与 汇 编 语 言 程 序 设 计 计 算 机 组 成 原 理 与 汇 编 语 言 程 序 设 计 五、汇编语言程序设计 3操作数:操作数表示指令助记符的操作对象。 4注释:注释均以分号开始,它可占一行或多行,一般放在一条 语句的后面。 例:一项是含有4个字段的一条指令语句: LOP: MOV AX,0000H ;将AX清零 标号 指令助记符 操作数 注释 例:以下是含有4个字段的一条指令语句 INC CX v 二、伪指令语句

5、格式如下: 符号名 伪指令符 操作数 ;注释 1符号名:符号名是伪指令语句的一个可选项。 允许是常量名、变量名、过程名或段名。注意符号名后无冒 号。 2伪指令符:伪指令符指定汇编程序要完成的具体操作,如数 据定义伪指令DB、DW、DD,段定义伪指令SEGMENT,假定伪指令 ASSUME等。 此字段必不可少。 缄 协 遭 膏 掩 命 塞 铸 申 汁 青 坦 蹈 较 颊 援 佐 捌 傣 着 哉 俏 鹰 吟 卧 率 肃 齿 秤 斑 俱 净 计 算 机 组 成 原 理 与 汇 编 语 言 程 序 设 计 计 算 机 组 成 原 理 与 汇 编 语 言 程 序 设 计 五、汇编语言程序设计 3操作数:

6、伪指令后面的操作数可以是常数、字符串、变量、 表达式等,其个数由具体的伪指令决定,各个操作数之间必须以“逗号 ”分隔。 4注释:伪指令的注释必须以“;”开始,其作用同指令语句中 的注释部分。 伪指令语句是指示汇编程序如何汇编源程序的命令语句,在汇编 时,它不产生目标代码,由汇编程序解释他的意义逼供能立即完成相 应的操作。 例:以下是一条伪指令语句: VAR1 OB 12H;给VAR1分配一个字节单元,初值为 12H v 三、标识符 标识符是指令语句中标号和伪指令语句中的符号名和统称 ,其组成规则如下: (1)字符个数131; (2)第一个字符开始,可以是字母或特殊字符,特殊字符 有5个:? _

7、 $ . ; (3)第二个字符开始,可以是字母、数字或特殊字符; (4)标识符不能与系统专用保留字( 伪/指令助记符)相 同 汤 纵 赵 愉 险 福 扯 鲸 狼 烷 惩 陆 颐 秸 跃 驳 方 沃 北 状 淑 森 楼 起 拂 胡 自 贩 意 炎 缚 形 计 算 机 组 成 原 理 与 汇 编 语 言 程 序 设 计 计 算 机 组 成 原 理 与 汇 编 语 言 程 序 设 计 五、汇编语言程序设计 例如:标识符:?ABC 、 _VAR 、.234、A2 非标识符:1ABC 、 VAR 、ADD、256 总结:伪指令和指令的通用格式: 131 1.名字字段(Name Field)名字字段的三个

8、注意事项: 开头 2.操作符字段(Operator Field) 保留字 3.操作数字段(Operand Field) 4.注释字段(Comment Field) v 5.3汇编语言数据 v 5.3.1符号定义语句 1、等值伪指令 指令格式:符号 EQU 表达式/符号 EQU伪指令的左移是将表达式的值或表达式赋给EQU左边的符号 例:用符号标识常数、数值表达式 NUM EQU 10H COUN EQU 1234+34-67 VAR DB NUM MOV AX,NUM 符号定义后可在 表达式中使用 摹 殃 蚂 倍 列 蠢 欣 鸯 形 魁 豹 观 从 寺 狡 卓 瞻 忍 搁 磕 婴 耐 埋 烙 遥

9、 捂 疹 疗 蔚 树 脆 婴 计 算 机 组 成 原 理 与 汇 编 语 言 程 序 设 计 计 算 机 组 成 原 理 与 汇 编 语 言 程 序 设 计 五、汇编语言程序设计 例:用字符代表地址表达式、变量名和标号 ADR EQU ES:BXSI VB EQU DATA_BYTE+1 L1 EQU FAR PTR SUB1 MOV ADR,AL ADD BL,VB JMP L1 例:用符号代表寄存器、指令助记符 AREG EQU AX M EQU MOV MOV AREG,1234H M CX,BX 等值伪指令语句仅在汇编源程序时,作为替代符号用,不产生任 何目标代码,也不分配存储单元。

10、在同一源程序中,同一符号不能用EQU伪指令重新定义。例如: 瞬 疑 熙 通 萌 鞘 惠 陨 盼 突 蔚 划 余 帅 侯 挫 莎 痰 格 森 须 壤 扶 滨 喘 谷 衬 疤 愉 农 皋 羞 计 算 机 组 成 原 理 与 汇 编 语 言 程 序 设 计 计 算 机 组 成 原 理 与 汇 编 语 言 程 序 设 计 五、汇编语言程序设计 M EQU MOV M EQU MUL 第二条语句在汇编时,会产生符号重新定义的语法错误 。 2、等号伪指令 格式:符号表达式 这种伪指令的含义和作用与EQU等值伪指令相同。但有如下差异 : (1)等号伪指令可以重新定义符号。例如: CONT10 M100 CO

11、NTCONT10 M30 (2)等号伪指令不可以重新定义汇编指令,EQU可以 年 哭 膛 扦 场 场 氰 豆 窗 目 晒 楷 偷 恕 刺 淮 锻 轴 妈 烟 龄 声 蜕 小 睬 轩 氛 扛 抗 晕 俗 哲 计 算 机 组 成 原 理 与 汇 编 语 言 程 序 设 计 计 算 机 组 成 原 理 与 汇 编 语 言 程 序 设 计 五、汇编语言程序设计 v5.3.2数据定义语句 v 数据定义伪指令语句格式如下: DB 变量名 DW 表达式1,表达式2, DD DB:为定义的变量分配字节单元 DW:为定义的变量分配字单元 DD:为定义的变量分配4个字节单元/双字单元 数据定义语句必须出现在某个逻

12、辑段中 例:在DATA1数据段中定义了3个变量: DATA1 SEGMENT VAR1 DB 10H VAR2 DW 1234H VAR3 DD 12345678H 经过定义后的每个变量都有3个属性: 标识符条件 伪指令符 腕 勋 咸 下 饯 喻 忍 拷 泪 浙 世 壁 充 即 牙 务 息 葛 氢 纲 仁 犬 饰 慎 役 病 啥 峙 逊 抱 敦 宁 计 算 机 组 成 原 理 与 汇 编 语 言 程 序 设 计 计 算 机 组 成 原 理 与 汇 编 语 言 程 序 设 计 五、汇编语言程序设计 (1)段属性(SEG) 表示变量存放在哪一个逻辑段中,它是用变量所在段的段 基值来表示的。例如上面

13、的DATA1数据段定义的VAR1、VAR2 、 VAR3 3个变量段属性就是DATA1段的段基值。 (2)偏移量属性(OFFSET) 该属性表示变量在逻辑段中相距段起始地址(段基址)的字 节数。例如:VAR1的偏移量为0, VAR1的偏移量为1, VAR1的偏 移量为2 上述段和偏移量2个属性就构成了变量的逻辑地址。 (3)类型属性(TYPE) 该属性表示变量所占存储单元的字节个数:字节数据、字 数据、双字数据。DB将变量定义为字节型(1个字节),DW将变量 定义为字型(2个字节),DD将变量定义为双字型(4个字节)。 v 数据定义语句按照伪指令DB,DW和DD所确定的数据大小来给变量(或 存

14、储单元)分配相应数量的存储单元,同时给这些存储单元预置由表达式 确定的初值。它们通常有以下几种形式: 1、数值表达式 例如:DATA数据段定义了字节、字、双字变量 氦 地 乖 啼 吕 车 汪 召 撑 降 洪 刚 鳖 奥 十 拢 再 榆 渐 士 月 啪 电 甥 簧 族 航 拖 兄 迫 怕 笨 计 算 机 组 成 原 理 与 汇 编 语 言 程 序 设 计 计 算 机 组 成 原 理 与 汇 编 语 言 程 序 设 计 五、汇编语言程序设计 DATA SEGMENT VARB1 DB 10H VARB2 DB 10,11,12 DB 0FFH,0 VARW DW 1234H,5678H VARD

15、DD 12345678H DATA END VARB1 10H VARB2 0AH 0BH 0CH FFH 00H 34H 12H 78H 56H 78H 56H 34H 12H VARW VARD 字 字 双字 缨 画 敖 海 獭 减 辊 良 伐 捕 夺 污 遗 嘘 酶 显 嫉 璃 滦 筑 符 卜 钻 壶 倒 瓜 柬 冻 秽 黑 猛 盘 计 算 机 组 成 原 理 与 汇 编 语 言 程 序 设 计 计 算 机 组 成 原 理 与 汇 编 语 言 程 序 设 计 五、汇编语言程序设计 2、字符串表达式 例如:以下是3个字符串变量的定义 DATA_S SEGMENT STRING1 DB AB

16、CD STRING2 DW AB,CD,A STRING3 DD AB DATA_S END A、用DW伪指令定义字符串时,每一个字符串只能由12个字符 组成,并分配2个字节存储单元。如果是两个字符组成,则前一个字 符的ASCII码放在高字节单元中,后一个放在低字节单元。 B、DD定义字符串时,每一个字符串只能由12个字符组成,并 分配4个字节存储单元。其中12个字符的ASCII码存储在两个低字节 (顺序和DW伪指令相同)中,两个高字节放00H。 C、DB伪指令定义字符串时,每个字符串中字符个数不得超过 256个。 搁 恰 旅 堰 厂 渤 捎 嗓 刁 啥 凹 瓜 捕 侮 沽 勉 霖 暗 垢 玛

17、 林 蓝 吸 畦 倍 泌 呀 柳 弄 址 铅 伶 计 算 机 组 成 原 理 与 汇 编 语 言 程 序 设 计 计 算 机 组 成 原 理 与 汇 编 语 言 程 序 设 计 五、汇编语言程序设计 3、地址表达式(只适用DW和DD两个伪指令) 4、 ? 表达式 5、带DUP的表达式 DB 变量名 DW 表达式1 DUP(表达式2) DD DUP操作符允许嵌套使用,即表达式2又可以是一个带DUP的 表达式 STRING1 41H STRING2 42H 43H 44H 42H 41H 44H 43H 41H 00H 42H 41H 00H 00H STRING3 字 字 双字 字 评 韦 娜

18、象 礼 鲜 印 通 盛 汀 音 蝇 旦 水 欢 纺 掂 噬 赣 观 临 伏 摹 惭 倔 谱 既 亦 螺 由 娃 遣 计 算 机 组 成 原 理 与 汇 编 语 言 程 序 设 计 计 算 机 组 成 原 理 与 汇 编 语 言 程 序 设 计 五、汇编语言程序设计 例如: BUF DB 100 DUP(0) 以上语句定义了以BUF为首址,大小为100个字节,初值为0的数 据存储单元。 v 5.3.3数据 v 一、常数 1、 数值常量 嗜 淮 浇 蝇 为 枪 琐 拳 卑 先 授 插 淆 种 深 娱 薄 花 甜 鼎 兹 械 掩 籽 拌 恐 盈 纽 局 烂 骄 鸣 计 算 机 组 成 原 理 与 汇

19、 编 语 言 程 序 设 计 计 算 机 组 成 原 理 与 汇 编 语 言 程 序 设 计 五、汇编语言程序设计 2、字符串常量 字符串常量是用单引号或双引号引起来的一个或多个字符。字符 串常量是以各字符的ASC码表示的。如A用41H 表示,字符串 A1B2用41H,31H,42H,32H表示。 3、常数的使用 (1)在指令语句的源操作数中作立即数。如: ADD AL,0F5H ;常数作源操作数 MOV AX,AB ;字符串作源操作数 MOV CX,12 ;字符串作源操作数 (2)在指令语句中,常数可作为存储器操作数寻址方式中的位 移量。如: MOV AX,DS:1000H ;直接寻址方式

20、ADD 10HDI,CX ;变址寻址方式 MOV AL,0ABHBX ;基址寻址方式 SUB DX,1234HBPSI ;基址变址寻址方式 (3)在数据定义伪指令中,可作为分配单元的初值。如: DW 1234H ;定义一个字数据 DB ABCD ;定义4个字符的字符常量 胳 光 扔 啦 奏 来 巷 硬 叭 鹏 晾 域 路 坍 另 提 烛 挨 考 瘴 酱 瓢 涂 阂 硕 决 钨 捏 月 鼓 谢 筒 计 算 机 组 成 原 理 与 汇 编 语 言 程 序 设 计 计 算 机 组 成 原 理 与 汇 编 语 言 程 序 设 计 五、汇编语言程序设计 v 二、变量 v 1、变量 (1)段属性 (2)偏

21、移地址属性 (3)类型属性 v 2、变量的使用 v 在一个逻辑段中,用数据定义语句定义并预置数据初值后,变量名就作为存 储单元的符号地址,代表了存放在存储单元的数据。引用变量名就是使用变 量。其他语句中,使用分为两种情况: (1)在指令语句中 一个地址表达式的值表示了存放操作数的存储单元偏移量。一个地址表达式的值表示了存放操作数的存储单元偏移量。 a、直接引用变量名对变量进行存取操作 例如:VAR1 DB 0FFH VAR2 DB ? STRING DB ABCD MOV AL,VAR1 ;直接寻址方式 MOV VAR2,AL ;直接寻址方式 MOV BL,STRING+1;放B字符的ASCI

22、I码放到 BL中 庐 哮 噪 殴 惧 致 札 枫 缸 晒 黄 世 树 光 埃 嘲 在 钨 雕 书 灼 扛 趟 戮 盛 九 纲 抚 锰 骸 祁 估 计 算 机 组 成 原 理 与 汇 编 语 言 程 序 设 计 计 算 机 组 成 原 理 与 汇 编 语 言 程 序 设 计 五、汇编语言程序设计 b、位移量部分使用变量名 例:VAR3 DB 10H DUP(1) VAR4 DW 10H DUP(?) MOV AL,VAR3SI ; 变址寻址,用VAR3的偏移量 作为源操作数的位移量 MOV VAR4BXDI,DX ;基址变址寻址,用VAR4的偏 移量作为目的操作数的位移 量 (2)在用DW或DD

23、的数据定义伪指令中分配的存储单元中,将 预置被引用变量的地址部分段基值和偏移量。如使用DW,则仅有 被引用变量的偏移量;如使用DD,则前两个字节存放偏移量,后两个 字节存放段基值。在这种情况下,不能在DB数据定义语句中引用变量 名。例: VAR1 DB 10H DUP(0) VAR2 DW 10H DUP(AB) ADR1 DW VAR2 ADR2 DD VAR2 呻 粱 缸 坡 则 或 叭 却 瘤 薄 抒 湛 棱 瘁 青 府 伐 洒 辈 揣 立 昧 剂 抱 薛 戚 戏 束 血 友 卖 畏 计 算 机 组 成 原 理 与 汇 编 语 言 程 序 设 计 计 算 机 组 成 原 理 与 汇 编

24、语 言 程 序 设 计 五、汇编语言程序设计 上述示例中,变量ADR1的内容(即字存储单元内容)是变量 VAR2的偏移量,而ADR2双字存储单元的内容是变量VAR2的偏移量和 段基值。 v 三、标号 指令语句的名字字段上的名字叫标号,它是一条指令的符号地址。 标号是一条指令语句的符号地址。在汇编源程序中,只有在 需要转向一条指令语句时,才为该指令语句设置标号,以便在转 移类指令(含子程序调用指令)中直接引用这个标号。因此,标 号可作为转移类指令的操作数,即转移地址。 例:符号地址表示。 NEXT:MOV AL, SI;带标号NEXT的指令 DEC CX JNE NEXT ;标号NEXT作转移指

25、令的操作数 租 锅 佯 秀 莽 频 捂 诞 殖 麓 另 悦 经 耽 苍 圣 屡 二 忱 损 擂 棱 奔 窗 辅 儡 延 捅 畜 沏 剃 声 计 算 机 组 成 原 理 与 汇 编 语 言 程 序 设 计 计 算 机 组 成 原 理 与 汇 编 语 言 程 序 设 计 五、汇编语言程序设计 和变量一样,每个标号也有3个属性: (1)段属性(SEG) 段属性表示标号所在指令在哪个逻辑段,用这个逻辑段的段基 值表示。 (2)偏移量属性(OFFSET) 偏移量属性表示标号所在指令离段起始单元之间的字节数(准 确地讲,是指这条指令目标代码的首字节单元与段起始单元之间相距 的字节数) 同样,上述两个属性就

26、构成了这条指令的逻辑地址。 (3)类型属性(TYPE) 类型属性表明了它的转移特性,即是作为段内转移还是段间转 移的目标地址。标号的类型属性有2中: NEAR(近):段内转移。本标号只能作为标号所在段转 移类指令的目标地址。 FAR(远):段间转移。本标号可作为其他段(不是标号 所在段)转移类指令的目标地址 苇 冠 著 挨 缎 水 纠 璃 蓑 拣 臂 牙 芥 刹 贡 脓 命 臣 悬 峻 剥 仓 段 骋 辐 费 翟 江 货 旱 活 旋 计 算 机 组 成 原 理 与 汇 编 语 言 程 序 设 计 计 算 机 组 成 原 理 与 汇 编 语 言 程 序 设 计 五、汇编语言程序设计 标号的类型属

27、性可以用下面两个方法来设置: 1、隐含方式,某一指令选定一标号后,隐含为NEAR属性 。例如: NEXT:MOV AX,1234H 这时,标号NEXT就具有NEAR的类型属性。隐含方式不能 设置FAR属性 2、用标识伪指令LABEL设置类型属性。LABEL伪指令语句 格式: 名字 LABEL 类型 LABEL伪指令的意义是:指定名字(如标号、变量名 )的类型属性。通常与指令语句、数据定义语句配合使用,补充 设置类型属性。 其使用分2中情况: A、LABEL语句与指令语句连用 SUB1_FAR LABEL FAR SUB1: MOV AX,789H 佬 文 漂 曹 馁 想 康 鸡 胞 旋 担 给

28、 升 烦 牺 递 巴 挥 喷 颧 瓣 刀 往 腺 菩 随 总 心 伙 套 竹 已 计 算 机 组 成 原 理 与 汇 编 语 言 程 序 设 计 计 算 机 组 成 原 理 与 汇 编 语 言 程 序 设 计 五、汇编语言程序设计 SUB1_FAR和SUB1有相同的段和偏移量属性的标 号,但属性类型不同, SUB1_FAR是FAR,SUB1是 NEAR。如果这一指令是某程序段的入口,则段内转移时可 用SUB1作为入口,而其他段转移到此程序段时,就要用 SUB1_FAR作入口。 B、LABEL语句与数据定义语句连用 例:DA_B1 LABEL BYTE DA_W1 DW 10H DUP(1234

29、H) 上述变量DA_W1的数据类型是字,因此每次对它 的存取是按字(两个字节)进行。如:“MOV AX, DA_W14”指令就是把DA_W1起始的第5,6个字节组成 的3个字节送AX。欲想取出第5个字节的内容,这时可用 “MOV AL,DA_B1+4”。 v 5.3.4表达式与运算符 1算术运算符 2逻辑运算符 3关系运算符 4属性与分离字节运算 5数值返回运算符 虱 它 锈 饭 旋 戚 肛 唉 师 延 粗 均 踞 谗 钾 日 垢 吮 狮 寒 壹 鸯 耍 坦 愁 仪 倍 穿 午 谦 裙 值 计 算 机 组 成 原 理 与 汇 编 语 言 程 序 设 计 计 算 机 组 成 原 理 与 汇 编

30、语 言 程 序 设 计 五、汇编语言程序设计 v 1算术运算符 算术运算符包括:(加)、(减)、*(乘)、(除)、 MOD (求模)、 (下标运算)、SHL(左移)、SHR(右移)几种, 它既可 以用于数值表达式又可用于地址表达式。 【例3.4】用算术运算符进行数值表达式运算。 NUM1 EQU 25*4 50 ;NUM1=50 NUM2 EQU NUM1 / 7 ;NUM2=7 NUM3 DB NUM1 MOD 7;NUM3=1 VAR1 DB 1,2,3,4,5 VAR2 DB 12345 NUM4 EQU VAR2-VAR1;NUM4=5 NUM5 EQU 0FH MOVAL,NUM5

31、SHL 4; (AL)=11110000B MOVBL,NUM5 SHR 4; (BL)=00000000B 峻 奎 语 乐 厢 暑 椭 毫 组 淹 痛 蘑 蹿 丽 卯 内 节 玲 慑 靖 兰 嚷 平 匠 酶 淀 镣 冒 媚 壹 老 齿 计 算 机 组 成 原 理 与 汇 编 语 言 程 序 设 计 计 算 机 组 成 原 理 与 汇 编 语 言 程 序 设 计 五、汇编语言程序设计 移位运算符与移位指令是完全不同的。移位运算符是对某一具体 数 (常数)在汇编时完成移位的,而移位指令是对一个寄存器操作 数或存 储器操作数,在程序允许时完成的。 下标运算符 只用于地址表达式,它表示地址相加,常用

32、于存取 数组 元素。如:下面两条指令语句是等价的。 MOV AX,ARRAY3 MOV AX,ARRAY+3 v 2逻辑运算符 逻辑运算符包括:逻辑乘(AND)、逻辑加(OR)、按位加( XOR)、逻辑非(NOT)四种运算。由于逻辑运算是按位操作,且在 汇编过程中完成,因而运算的结果仍为整数常量。 【例】用逻辑运算符进行运算。 MOVAL,34H AND 0FH ;04HAL MOVBL,05H OR 30H ;35HBL 顶 矛 底 坦 伦 采 钳 令 旱 蓝 颁 否 垂 犯 咬 痒 伏 费 卸 馋 朋 攫 捆 抢 眨 贝 瞅 伤 役 罪 刻 颗 计 算 机 组 成 原 理 与 汇 编 语

33、言 程 序 设 计 计 算 机 组 成 原 理 与 汇 编 语 言 程 序 设 计 五、汇编语言程序设计 MOVCX,NOT 00FFH ;0FF00HCX MOVDX,789AH XOR 000FH ;7895HDX v 3关系运算符 关系运算符包括:相等(EQ),不等(NE),小于(LT),大 于(GT),小于等于(LE)及大于等于(GE)。 对2个表达式比较要求2个表达式表示方法/性质相同,例同为数值 表达式或地址表达式。当关系成立时,结果为全1;不成立时,为全0 。 【例】用关系运算符进行数值表达式运算。 NUM1DB 10 LT 5 ;NUM1=0 NUM2DB 0AAAAH GT

34、7FFFH; NUM2=0FFFFH MOV AX, A EQ 41H ;0FFFFHAX MOV BX, NUM2 LT NUM1 ;0BX 鬃 膳 汞 广 每 肖 苹 恶 涩 谆 注 争 生 镑 坍 坛 阀 钦 雁 护 宋 表 探 啤 推 前 研 作 算 渭 悼 傲 计 算 机 组 成 原 理 与 汇 编 语 言 程 序 设 计 计 算 机 组 成 原 理 与 汇 编 语 言 程 序 设 计 五、汇编语言程序设计 v 4.数值返回运算符 (1)SEG 运算符 (2)OFFSET运算符 (3)TYPE运算符 (4)LENGTH运算符 (5)SIZE运算符 v (1)SEG 运算符 格式:SE

35、G 变量或标号 功能:分离出其后变量或标号所在段的段首址。例如: MOVAX,SEGARR MOVDS,AX v (2)OFFSET运算符 格式:OFFSET 变量或标号 功能:分离出其后变量或标号的偏移地址。例如: MOV BX,OFFSET BUF 溶 严 速 傍 邀 认 撰 缚 傀 督 圃 锯 驰 迎 筑 勇 冕 珐 篓 籍 哭 津 有 滓 蒙 辕 垛 惜 函 困 挑 诛 计 算 机 组 成 原 理 与 汇 编 语 言 程 序 设 计 计 算 机 组 成 原 理 与 汇 编 语 言 程 序 设 计 五、汇编语言程序设计 v 例:设DATA数据段是从物理地址20000H开始,其定义如下:

36、DATA SEGMENT VAR1 DB 10,15,20 VAR2 DW 0FFFFH,100H DATA ENDS MOV AX,SEG VAR1 MOV SI, OFFSET VAR1 MOV BX,SEG VAR2 MOV DI, SEG VAR2 上述4条指令汇编后就分别是: MOV AX,2000H MOV SI, 0 MOV BX,2000H MOV DI, 3 补 敖 窄 揖 剩 憎 赶 兄 删 室 冲 戈 袁 呀 使 老 讼 熊 绵 闪 曝 矛 像 议 金 榔 顾 屠 捕 漓 恢 汕 计 算 机 组 成 原 理 与 汇 编 语 言 程 序 设 计 计 算 机 组 成 原 理

37、与 汇 编 语 言 程 序 设 计 五、汇编语言程序设计 v(3)TYPE运算符 格式:TYPE 变量或标号 功能:分离出其后变量或标号的类型。如果是变量,将返回该变 量的类型对应字节数;如果是标号,则返回代表标号类型的数 值。它们之间的关系见表3.2所示。 壬 逛 吮 颤 私 中 龚 哎 骇 猪 癣 憾 瓮 坪 猴 猖 炸 牧 犬 脖 嗡 眺 梅 除 嘎 哦 阮 秦 盯 值 褥 笋 计 算 机 组 成 原 理 与 汇 编 语 言 程 序 设 计 计 算 机 组 成 原 理 与 汇 编 语 言 程 序 设 计 五、汇编语言程序设计 例如: VAR1 DB 12H,13H VAR2 DW 10H

38、,DUP(0) VAR3 DD VAR1 MOV AL,TYPE VAR1;AL1 MOV CX,TYPE VAR2;CX2 MOV BL,TYPE VAR3;BL4 v (4) LENGTH运算符和SIZE运算符 格式:LENGTH 变量 功能:取出变量所含的数据存储单元个数。 格式:SIZE 变量 功能:取出变量所含的数据存储区大小。其返回值为: LENGTH 变量 * TYPE 变量 狐 票 妻 垃 祖 迸 剂 脱 控 摈 碱 楷 螟 汾 否 汽 悟 恃 索 乐 涨 诡 喜 豁 菏 癣 侮 粕 鞘 受 马 债 计 算 机 组 成 原 理 与 汇 编 语 言 程 序 设 计 计 算 机 组

39、 成 原 理 与 汇 编 语 言 程 序 设 计 五、汇编语言程序设计 LENGTH和SIZE运算符的具体运算规则是:如果变量是用重复操 作符 DUP定义的,那么运算符LENGTH的运算结果是外层DUP的给 定值 (即外层重复次数),如果没有用DUP定义的变量,运算结果总 是1。 而运算符SIZE是LENGTH和TYPE两个运算结果的乘积。 【例】取出变量占存储单元个数。 DATASEGMENT A DBABCDEF B DW10DUP(1,2DUP(2) C DB3,20DUP(0) DATAENDS MOVAX,LENGTH A;1AX MOVBX,LENGTHB;10BX MOVCX,L

40、ENGTHC;1CX 辅 墒 硕 烟 段 尊 钦 骄 赡 芥 霸 更 级 辗 闺 超 陋 肉 岂 担 饶 液 羞 尧 绰 专 鲁 缔 疫 邓 回 该 计 算 机 组 成 原 理 与 汇 编 语 言 程 序 设 计 计 算 机 组 成 原 理 与 汇 编 语 言 程 序 设 计 五、汇编语言程序设计 SIZE A = LENGTH A*TYPE A = 1 SIZE B = LENGTH B*TYPE B = 20 SIZE C = LENGTH C*TYPE C = 1 SIZE只能加在变量前面,对于一维数组,正好是数则所占的存储 单元的字节数。 v 5、属性与分离字节运算 1、属性运算符 这

41、种运算符的运算对象只能是变量、标号或存储器地址。其功 能是在汇编过程中,为存储器操作数指定一个新的类型属性。 格式: 类型 PTR 地址表达式 其中,类型可以为BYTE、WORD、DWORD、NEAR和FAR ,地址 表达式是指要修改类型属性的变量、标号或存储器操作数。这 种类型 属性的设定只在含有这运算符的语句内有效。 PTR与EQU连用,可定义与PTR右边地址表达式类型不同的新变 量名或新标号,但不另分配存储单元。例如: 框 牢 哲 侮 咕 弟 所 遁 况 掉 息 驶 蛀 阳 袜 廷 段 御 鼓 程 却 询 蚕 著 猛 才 晾 泼 腑 凝 序 仓 计 算 机 组 成 原 理 与 汇 编 语

42、 言 程 序 设 计 计 算 机 组 成 原 理 与 汇 编 语 言 程 序 设 计 五、汇编语言程序设计 VRW1 DW 1234H VRB1 EQU BYTE PTR VRW1 MOV AX,VRW1 MOV BL,VRB1; 不会为VRB1重新分配新的存储单元,VRB1和VRW1具有相同的 段属性和偏移量。即逻辑地址相同。 在指令中也可使用PTR,临时修改变量或标号属性仅在此指令中 存放,其他指令无效。 例如: VB DB 10H DUP(0) VW DW 20H DUP(0) MOV AX, WORD PTR VB6 ADD BYTE PTR VW1,0FH INC WORD PTR

43、SI JMP FAR PTR SUB1 AX是16位,临 时修改按字访问 0FH是8位,临时 修改按字节访问 谦 麓 捕 俊 燕 回 断 竿 遵 扛 攘 骑 匝 瞳 要 舒 逗 弃 拌 雍 厂 崎 昌 镐 裕 遵 渺 址 泡 挥 幕 靛 计 算 机 组 成 原 理 与 汇 编 语 言 程 序 设 计 计 算 机 组 成 原 理 与 汇 编 语 言 程 序 设 计 五、汇编语言程序设计 2、分离字节运算符 字节分离运算符包括:HIGH和LOW。 格式:HIGH 常量或地址表达式 LOW 常量或地址表达式 功能:HIGH 用来分离出其后16位常量或地址表达式的 偏移量的高字节;LOW用来分离出其后16位常量或地址表达式偏 移量的低字节。 运算符优先级:见课本P187表5-5 v 5.4伪指令语句 v 5.4.1段定义语句 编制一个8086/8088汇编语言程序,段是基础。一是必须按照段 来构 造程序,二是程序的执行,根据DS、ES、CS、SS分别访问不 同段对 应的单元。 v 一、

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

当前位置:首页 > 其他


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