教学提示 全面而准确地理解每条指令 的功能和应用,是编写汇编 语言程序的关键 逐个暴开指令
教学提示 全面而准确地理解每条指令 的功能和应用,是编写汇编 语言程序的关键
第2章 23数据传送类指令 数据传送是计算机中最基本、最重要 的一种操作 >传送指令也是最常使用的一类指令 传送指令把数据从一个位置传送到另 个位置 除标志寄存器传送指令外,均不影响 标志位 >重点掌握 MOV XCHG XLAT PUSH POP LEA
第 2 章 2.3 数据传送类指令 ➢数据传送是计算机中最基本、最重要 的一种操作 ➢传送指令也是最常使用的一类指令 ➢传送指令把数据从一个位置传送到另 一个位置 ➢除标志寄存器传送指令外,均不影响 标志位 ➢ 重点掌握 MOV XCHG XLAT PUSH POP LEA
第2章 23.1通用数据传送指令 >提供方便灵活的通用传送操作 >有3条指令 MOV MOV XCHG XLAT XCHG XLAT
第 2 章 2.3.1 通用数据传送指令 ➢提供方便灵活的通用传送操作 ➢有3条指令 MOV XCHG XLAT MOV XCHG XLAT
第2章 传送指令MOV(move) MOV >把一个字节或字的操作数从源地址传 送至目的地址 MOV reg/mem, imm 例题2.1 MOV reg/mem/seg,re例题22 MOV reg/seg, mem 例题23 MOV reg/mem, seg 例题2.5 ;段寄存器送寄存器或主存
第 2 章 传送指令MOV(move) ➢把一个字节或字的操作数从源地址传 送至目的地址 MOV reg/mem,imm ;立即数送寄存器或主存 MOV 例题2.1 MOV reg/mem/seg,reg ;寄存器送(段)寄存器或主存 例题2.2 MOV reg/seg,mem ;主存送(段)寄存器 例题2.3 MOV reg/mem,seg ;段寄存器送寄存器或主存 例题2.5
第2章 MOV指令传送功能 立即数 存储器 通用寄存器 AX BX CX DX BP SP S DI 段寄存器 CS DS ES SS MOV也并非任意传送
第 2 章 MOV指令传送功能 MOV也并非任意传送 立即数 段寄存器 CS DS ES SS 通用寄存器 AX BX CX DX BP SP SI DI 存 储 器
第2章 非法传送种种 两个操作数的类型不一致[示例 ■例如源操作数是字节,而目的操作 数是字;或相反 >两个操作数不能都是存储器[示例 ■传送指令很灵活,但主存之间的直 接传送却不允许 >段寄存器的操作有一些限制[示例 ■段寄存器属专用寄存器,对他们的 操作能力有限
第 2 章 非法传送种种 ➢两个操作数的类型不一致 ◼例如源操作数是字节,而目的操作 数是字;或相反 ➢两个操作数不能都是存储器 ◼传送指令很灵活,但主存之间的直 接传送却不允许 ➢段寄存器的操作有一些限制 ◼段寄存器属专用寄存器,对他们的 操作能力有限 示例 示例 示例
第2章 交换指令XCHG( exchange) XCHG >把两个地方的数据进行互换 XCHG reg, reg/mem g reg) reg/mem >寄存器与寄存器之间对换数据例题26 >寄存器与存储器之间对换数据例题27 >不能在存储器与存储器之间对换数据
第 2 章 交换指令XCHG(exchange) ➢把两个地方的数据进行互换 ➢寄存器与寄存器之间对换数据 ➢寄存器与存储器之间对换数据 ➢不能在存储器与存储器之间对换数据 XCHG XCHG reg,reg/mem ;reg reg/mem 例题2.7 例题2.6
第2章 换码指令XLAT( translate) XLAT 将BX指定的缓冲区中、AL指定的位移 处的一个字节数据取出赋给AL XLAt a1-ds:bx1例题28 换码指令执行前: 在主存建立一个字节量表格,内含要转换成的目的代码 表格首地址存放于BX,A存放相对表格首地址的位移量 >换码指令执行后: 将AL寄存器的内容转换为目标代码
第 2 章 ➢换码指令执行前: 在主存建立一个字节量表格,内含要转换成的目的代码 表格首地址存放于BX,AL存放相对表格首地址的位移量 ➢换码指令执行后: 将AL寄存器的内容转换为目标代码 换码指令XLAT(translate) ➢将BX指定的缓冲区中、AL指定的位移 处的一个字节数据取出赋给AL XLAT XLAT ;al←ds:[bx+al] 例题2.8
第2章 2.3.2堆栈操作指令 堆栈是一个“后进先出高地址 存储器 FILQ(或说“先进后 出FIL0)的主存区域, 位于堆栈段中;S段寄栈底一 ←SP 〔栈顶〕 存器记录其段地址 > 堆栈只有一个出口,即 当前栈顶;用堆栈指针堆楼段 寄存器SP指定 >栈顶是地址较小的一端 O000H (低端),栈底不变 (a)堆栈段
2.3.2 堆栈操作指令 ➢ 堆栈是一个“后进先出 FILO”(或说“先进后 出FILO”)的主存区域, 位于堆栈段中;SS段寄 存器记录其段地址 ➢ 堆栈只有一个出口,即 当前栈顶;用堆栈指针 寄存器SP指定 ➢ 栈顶是地址较小的一端 (低端),栈底不变 第 2 章
第2章 堆栈的操作 >堆栈只有两种基本操作:进栈和 出栈,对应两条指令PUSH和PoP PUSH POP ;进栈指令先使 ;出栈指令把栈顶 堆栈指针SP减2 的一个字传送至指 然后把一个字操定的目的操作数 作数存入堆栈顶(然后堆栈指针SP加2 部
第 2 章 堆栈的操作 ➢堆栈只有两种基本操作:进栈和 出栈,对应两条指令PUSH和POP PUSH ;进栈指令先使 堆栈指针SP减2, 然后把一个字操 作数存入堆栈顶 部 POP ;出栈指令把栈顶 的一个字传送至指 定的目的操作数, 然后堆栈指针SP加2