第3章 汇编语言

合集下载

汇编语言程序设计(第四版)第3章【课后答案】

汇编语言程序设计(第四版)第3章【课后答案】

汇编语言程序设计第四版【课后习题答案】--囮裑為檤第3章汇编语言程序格式〔习题3.1〕伪指令语句与硬指令语句的本质区别是什么?伪指令有什么主要作用?〔解答〕伪指令语句与硬指令语句的本质区别是能不能产生CPU动作;伪指令的作用是完成对如存储模式、主存变量、子程序、宏及段定义等很多不产生CPU动作的说明,并在程序执行前由汇编程序完成处理。

〔习题3.2〕什么是标识符,汇编程序中标识符怎样组成?〔解答〕为了某种需要,每种程序语言都规定了在程序里如何描述名字,程序语言的名字通常被称为标识符;汇编语言中的标识符一般最多由31个字母、数字及规定的特殊符号(如-,$,?,@)组成,不能以数字开头。

〔习题3.3〕什么是保留字,汇编语言的保留字有哪些类型,并举例说明。

〔解答保留字是在每种语言中规定了有特殊意义和功能的不允许再做其它用处的字符串;汇编语言的保留字主要有硬指令助记、伪指令助记符、运算符、寄存器名以及预定义符号等。

汇编语言对大小写不敏感。

如定义字节数和字符串的DB就是伪指令助记符。

〔习题3.4〕汇编语句有哪两种,每个语句由哪4个部分组成?〔解答〕汇编语句有执行性语句和说明性语句;执行性语句由标号、硬指令助记符、操作数和注释四部分组成;说明性语句由名字、伪指令助记符、参数和注释四部分组成〔习题3.5〕汇编语言程序的开发有哪4个步骤,分别利用什么程序完成、产生什么输出文件。

〔解答〕⒈编辑文本编辑程序汇编语言源程序.asm⒉汇编汇编程序目标模块文件.obj⒊连接连接程序可执行文件.exe或.com⒋调试调试程序应用程序〔习题3.6〕区分下列概念:(1)变量和标号(2)数值表达式和地址表达式(3)符号常量和字符串常量〔解答〕(1)变量是在程序运行过程中,其值可以被改变的量;标号是由用户自定义的标识符,指向存储单元,表示其存储内容的逻辑地址。

(2)数值表达式一般是由运算符连接的各种常数所构成的表达式,地址表达式是由名字、标号以及利用各种的操作符形成的表达式。

汇编语言第三章答案

汇编语言第三章答案

3.1 给定(BX)=637DH,(SI)=2A9BH,位移量D=7237H,试确定在以下各种寻址方式下的有效地址是什么?(1) 立即寻址(2) 直接寻址(3) 使用BX的寄存器寻址(4) 使用BX的简接寻址(5) 使用BX的寄存器相对寻址(6) 基址变址寻址(7) 相对基址变址寻址答:(1) 操作数在指令中,即立即数;(2) EA=D=7237H;(3) 无EA,操作数为(BX)=637DH;(4) EA=(BX)=637DH;(5) EA=(BX)+D=0D5B4H;(6) EA=(BX)+(SI)=8E18H;(7) EA=(BX)+(SI)+D=1004FH;超过了段的边界,最高进位位丢失,因此EA=004FH。

3.2 试根据以下要求写出相应的汇编语言指令(1) 把BX寄存器和DX寄存器的内容相加,结果存入DX寄存器中。

(2) 用寄存器BX和SI的基址变址寻址方式把存储器中的一个字节与AL寄存器的内容相加,并把结果送到AL寄存器中。

(3) 用寄存器BX和位移量0B2H的寄存器相对寻址方式把存储器中的一个字和(CX)相加,并把结果送回存储器中。

(4) 用位移量为0524H的直接寻址方式把存储器中的一个字与数2A59H相加,并把结果送回存储单元中。

(5) 把数0B5H与(AL)相加,并把结果送回AL中。

答:(1) ADD DX, BX(2) ADD AL, [BX][SI](3) ADD [BX+0B2H], CX(4) ADD WORD PTR [0524H], 2A59H(5) ADD AL, 0B5H3.3 写出把首地址为BLOCK的字数组的第6个字送到DX寄存器的指令。

要求使用以下几种寻址方式:(1) 寄存器间接寻址(2) 寄存器相对寻址(3) 基址变址寻址答:(1) MOV BX, OFFSET BLOCKADD BX, (6–1)*2MOV DX, [BX](2) MOV BX, OFFSET BLOCK 改为:MOV BX, (6-1)*2MOV DX, [BX+(6–1)*2] 也可MOV DX, BLOCK[BX](3) MOV BX, OFFSET BLOCKMOV SI, (6–1)*2MOV DX, [BX][SI]3.4 现有(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100H)=12H,(20101H)=34H,(20102H)=56H,(20103H)=78H,(21200H)=2AH,(21201H)=4CH,(21202H)=B7H,(21203H)=65H,试说明下列各条指令执行完后AX寄存器的内容。

汇编语言沈美明答案汇编语言第3章答案沈美明

汇编语言沈美明答案汇编语言第3章答案沈美明

汇编语言沈美明答案汇编语言第3章答案沈美明第三章 80X86的指令系统和寻址方式 1、给定(BX )=637DH,(SI )=2A9BH,位移量D=7237H,试确定在以下各种寻址方式下的有效地址是什么答案:(1)立即寻址没有(2)直接寻址 7237H(3)使用BX 的寄存器寻址没有(4)使用BX 的间接寻址 637DH(5)使用BX 的寄存器相对寻址 0D5F0H(6)基址变址寻址 8E18H(7)相对基址变址 004FH2、根据下列要求,写出相应的汇编指令(1)把BX 寄存器和DX 寄存器的内容相加,结果存入DX 寄存器中。

(2)用寄存器BX 和SI 基地址变址寻址方式把存储器中的一个字节与AL 寄存器的内容相加,并把结果送到AL 寄存器中。

(3)用寄存器BX 和位移量0B2H 的寄存器相对寻址方式把存储器中的一个字和(CX )相加,并把结果送回存储器中。

(4)用位移量为0524H 的直接寻址方式把存储器中的一个字与数2A59H 相加,并把结果送回该存储单元中。

(5)把数0B5H 与(AL )相加,并把结果送回AL 中。

答案:(1)ADD DX,BX(2)ADD AL,[BX][SI](3)ADD [BX][0B2H], CX(4)MOV AX,2A59HADD [0524H] ,AX(5)ADD AL ,0B5H3、写出把首地址为BLOCK 的字数组的第6个字送回到DX 寄存器的指令。

要求使用以下几种寻址方式:(1)寄存器间接寻址(2)寄存器相对寻址(3)基址变址寻址答案:(1)寄存器间接寻址MOV BX,OFFSET [BLOCK][0AH]MOV DX ,[BX](2)寄存器相对寻址 MOV SI,OAHMOV DX,[BLOCK][SI] (3)基址变址寻址MOV BX ,BLOCKMOV SI,OAHMOV DX,[BX][SI]4、现有(DS )=2000H,(BX)=0100H,(SI)=0002H,(xx0)=12H,(xx1)=34H,(xx2)=56H, (xx3)=78H,(21200)=2AH,(20201)=4CH,(21202)=B7H,(21203)=65H,试说明下列各条指令执行完后,AX 寄存器的内容。

第三章 汇编语言程序设计

第三章  汇编语言程序设计

第3章 汇编语言程序设计 章
3.2 汇编语言源程序的格式
பைடு நூலகம்
名字: 名字:变量和标号
变量名 段名 过程名:指示性语句中的名字.内存单元的名 变量名/段名 过程名:指示性语句中的名字. 段名/过程名
定义. BUF DB ? 字,由DB/DW/DD定义. 由 定义 变量的三种属性: 变量的三种属性: 段值 SEG 偏移量 OFFSET 类型 BYTE/WORD/DWORD 标号:指令性语句中的名字.指令存放单元的符号地址. 标号:指令性语句中的名字.指令存放单元的符号地址. LOOPER: MOV AL,DATA[SI] 标号的三种属性: 标号的三种属性: 段值 SEG 偏移量 OFFSET 类型 NEAR/FAR 对于汇编程序来说,变量和标号都是存储单元的符号地址. 注:对于汇编程序来说,变量和标号都是存储单元的符号地址. 只是标号对应的存储单元中存放的是指令, 只是标号对应的存储单元中存放的是指令,而变量所对应的 存储单元存放的是数据. 存储单元存放的是数据.
令和数据. 令和数据. 汇编语言(Assenbly Lauguage):用助记符来编写 汇编语言( Lauguage): 指令,地址和数据也可用符号表示. 指令,地址和数据也可用符号表示.用汇编语言 编写的程序必须翻译成机器语言目标程序( 编写的程序必须翻译成机器语言目标程序(或目 标代码)才能执行,这种翻译过程称为汇编 汇编. 标代码)才能执行,这种翻译过程称为汇编. 高级语言:不针对某个具体的计算机,通用性强. :不针对某个具体的计算机,通用性强. 但高级语言编写的源程序同样必须"翻译" 但高级语言编写的源程序同样必须"翻译"成机 器语言,计算机才能执行, 器语言,计算机才能执行,所用的系统软件称为 编译程序或解释程序. 编译程序或解释程序.

计算机接口技术课件 第三章 MCS-51单片机汇编语言与程序设计基础

计算机接口技术课件 第三章 MCS-51单片机汇编语言与程序设计基础

例2:编制一段程序,要求在端口线 :编制一段程序,要求在端口线P1.0,P1.1上分别产生周期为 , 上分别产生周期为 200us和400us的方波.设单片机的外接频率为 的方波. 和 的方波 设单片机的外接频率为12MHz. . 分析:利用定时器产生方波,将定时器设置成为工作方式 , 分析:利用定时器产生方波,将定时器设置成为工作方式3,将寄 存器T0定时 定时100us,T1定时 定时200us,达到定时时间后引起中断,在中 存器 定时 , 定时 ,达到定时时间后引起中断, 断服务程序中各自将P1.0和P1.1引脚取反. 引脚取反. 断服务程序中各自将 和 引脚取反 定时器预设值的设置: 定时器预设值的设置: 单片机的晶体振荡频率为12MHz,计时器的计时频率为1MHz,机 单片机的晶体振荡频率为 ,计时器的计时频率为 , 器周期为1us. 定时 定时100us,因此寄存器 需要计数 需要计数100次 器周期为 . T0定时 ,因此寄存器T0需要计数 次 ,其预 置值为64H+1=9CH. T1定时 定时200us,因此寄存器 需要计数 需要计数200次 置值为 . 定时 ,因此寄存器T1需要计数 次 其预置值为C8H+1=38H. ,其预置值为 . 定时器T0,T1的工作方式设置: 的工作方式设置: 定时器 的工作方式设置 T0采用工作方式 ,因此 采用工作方式3,因此TMOD寄存器的值设置为 寄存器的值设置为#22H. 采用工作方式 寄存器的值设置为 . 定时器T0,T1的控制设置: 的控制设置: 定时器 的控制设置 打开T0, ;要求TCON寄存器的值设置为 寄存器的值设置为#50H. 打开 ,T1;要求 寄存器的值设置为 .
定义存储区域的大小. 6. DS —定义存储区域的大小. 定义存储区域的大小 例: ORG 0350H DS 3

汇编语言(微机)第三章

汇编语言(微机)第三章
21
汇编语言源程序的格式
一般情况下,定位类型、组合类型和类别说明可以 不用。 注意:SEGMENT和ENDS语句必须成对使用。 例:定义一数据段DATA
DATA SEGMENT A DB '1234' B DW 12H
DATA ENDS
22
汇编语言源程序的格式
(2)偏移地址定位语句 ORG 格式:ORG 数值表达式 功能:指定在它之后的程序段或数据块所存放的起始地 址的偏移量。
SUB1: ?
RESU: ?

31
汇编语言源程序的格式
④ 用DUP重复因子初始化一个数据区
格式:N DUP (表达式)
?、数值、
数值表达式
重复次数 重复装入的内容
字符等
例1: DA1 DB 2 DUP(0) DA2 DB 2 DUP(‘AB’) DA3 DW 2 DUP(1)
DA1
00
00
DA2
41
LOP: ADD AL,[BX] ADC AH,0 INC BX LOOP LOP MOV [DI] ,AX MOV AH ,4CH INT 21H
CODE ENDS END START
9
汇编语言源程序的格式
汇编语言源程序的格式
二、指令性语句 [标号:] 操作码 [操作数] [;注释项]
操作码:指明操作的性质,说明计算机要执行的具体操 作。用助记符表示。
第三章:8086汇编语言程序设计
主讲教师:范新民
整理ppt
1
8086汇编语言程序设计
1 3.2.1 汇编语言源程序的格式 2 3.2.2 常量、标识符和表达式 3 3.2.3 指示性语句 4 3.2.4 指令性语句 5 3.2.5 宏指令

第3章 汇编语言程序设计

ES:ESEG
START PROC FAR MOV AX,DSEG MOV DS,AX MOV AX,ESEG MOV ES,AX ;-----------------------------------------------------微机原理 汇编语言程序设计(8)
MOV AH,4CH INT 21H 指令构成的管理性语句,其对 START ENDP 应的伪操作是在汇编过程中完 CSEG ENDS 成的,汇编后不产生机器代码。 ;--------------------------------------------
MESG
43 45 4C 4C
H E L L O
DB ‘AB’ DW ‘AB’
41
A
42 42 41
B B A
微机原理 汇编语言程序设计(31)
• 操作数?可以保留存储空间但 不存入数据. ABC DB 0,?,?,?,0 DFF DW ?,52,? • 经汇编后存储情况如图所示.
ABC
00
微机原理 汇编语言程序设计(15)
• 段定义伪操作SEGMENT/ENDS 格式如下: segment-name SEGMENT … segment-name ENDS 其中删节号部分,对于DS、ES和SS来说,一般是存贮 单元的定义、分配等伪操作;对于代码段则是指令 及伪操作。
微机原理 汇编语言程序设计(16)
汇编语言的语句格式
• 汇编语言源程序中的每个语句可以由4项组成, 格式如下 [名字项] 操作项 操作数项 ;注释项 AGAIN: MOV AL, [SI] ;取加数 A DB ‗ABCDEFG‘
微机原理 汇编语言程序设计(9)
名字项
• 源程序中用下列字符表示名字: • 字母:A~Z或a~z; • 数字:0~9; • 专用字符号:?、• 、@、―、$; • 名字项可以是标号或变量。

汇编语言第3章 指令系统和寻址方式


5.寄存器相对寻址方式(register relative addressing)
EA=基址(base) 或变址( index)+偏移量 (displacement)
基址寄存器有:BX,BP 变址寄存器有:SI,DI 注:默认段是数据段和堆栈段
(SI) 物理地址=(DS)*16+(BX)+displacement
(DI) =(SS)*16+(BP)+ (SI)+displacement (DI)
例:mov AX,ARRAY[BX][DI] (DS)=1000H,(BX)=1200H, (DI)=1000H, ARRAY=1000H 物理地址=DS*16+(BX)+(DI)+ARRAY =DS*16+1200+1000+1000=13200H 若:(13200)=34H,(13201)=12H 则,(AX)=1234H 允许段超越。 例:mov AL,ES:ARRAY[BX][DI] 用途:处理成组数据(举例说明)
2.段内间接寻址(intrasegment indirect addressing) (IP)新=EA=寄存器或存储单元的内容 寄存器:所有寄存器寻址方式可用的寄存器 存储单元:所有存储单元寻址方式均适用 例:JMP SI (IP)=(SI) JMP WORD PTR VAR或简写JMP VAR (DS)=1000H,VAR=2000H 存储单元的物理地址=(DS)*16+VAR=12000H (12000H)=1234H 则,(IP)新=1234H
4.寄存器间接寻址方式(register indirect addressing)
EA=基址(base) 或变址( index) 基址寄存器有:BX,BP 变址寄存器有:SI,DI 注:默认段是数据段和堆栈段 (SI) 物理地址=(DS)*16+(BX) (DI) =(SS)*16+(BP)

华中科技大学8086汇编讲义第三章宏汇编语言

第三章宏汇编语言每种计算机语言都规定了自己的字符、基本词汇、典型语句和语法规则。

同样,汇编语言也有自己的字符、基本词汇、典型语句和语法规则。

字符:ASCII字符基本词汇:符号指令(MOV、ADD)伪指令(DB、SEGMENT等)典型语句:●机器指令语句——对应机器指令的一种操作。

●伪指令语句——无机器语言与之对应,不生成机器指令。

●宏指令语句——一条宏指令对应多条机器指令,产生一组目标代码。

语法规则:基本语法单位(常量、变量、标号、表达式)前面的例子已介绍了源程序的基本结构、格式、名字的定义、语句格式,下面将更深入地介绍有关语法规则。

3.1表达式汇编程序的语句及程序格式都比较固定,语句中除正确选择操作符之外,主要问题在于正确表示操作数地址,这涉及到寻址方式,可以归结到地址表达式的使用。

表达式:由常数、寄存器、标号、变量加上运算符构成的式子。

3.1.1.常量与数值表达式一.常量常量:从源程序翻译成目标程序期间已经有确定数值的量。

用途:赋值、作立即数、位移量。

由常量与运算符组成的式子。

数值表达式在汇编期间进行运算,结果为常量。

汇编期间允许对常量进行3种运算:1.算术运算包括:+、–、*、/、模除(MOD,取余数)、右移、左移。

2.逻辑运算●逻辑乘:AND(与)●逻辑加:OR(或)●按位加:XOR(异或)●逻辑非:NOT(非)3.关系运算包括:相等(EQ)、不等(NE)、小于(L T)、大于(GT)、小于等于(LE)、大于等于(GE)。

运算结果:关系不成立,结果为0;关系成立,结果为–1(0FFFFH)。

如:N = 50M = (N EQ 50)该关系成立,M =–1。

3.1.2.变量、标号与地址表达式一.变量变量:数据存贮单元的名字。

(存放地址的符号表示)。

变量有三个属性:段、EA、类型。

其中类型由定义时的伪指令确定(DB、DW、DD、DT)。

变量的定义:格式:[变量名] 数据定义伪指令表达式[,…]数据定义伪指令:DB、DW、DD、DQ、DT等。

计算机组成原理与汇编语言3

第三章 数值运算及运算器
补码加减运算
注意:求一个数的补码: 正数时,补码和原码相同; 负数时, 对原码除符号位外求反加1。
例1: 1: y = -0.0110 [y]补 = 1.1010 例2: y = 0.0111 [y]补 = 0.0111 [-y]补 = 1.1001 [-y]补 = 0.0110
第三章 数值运算及运算器
例(3):按位清
设:A=10010010,将A最高位清“0” 设:B=01111111 10010010 A ∧ 01111111 B ——————— 00010010 A
第三章 数值运算及运算器
例(4):按位测试
设:A=10010010,测A最高位是否为“1”; 设: B=10000000 10010010 ∧ 10000000 ——————— 10000000 结果不全为“0”,表明被测码的被测位为“1”。 结果为全“0”,表明被测码的被测位为“0”。
第三章 数值运算及运算器
(一)对进位公式的分析 设相加的两个n位操作数为: A=An-1An-2…Ai..A0 B=Bn-1Bn-2…Bi..B0
Ci+1 = AiBi + (Ai⊕Bi) Ci —— 进位逻辑表达式 设:Gi = AiBi —— 进位产生函数(Carry Generate Function)
二、溢出检测
1. 采用一个符号位判断
规则: • 当两个同号数相加,若所得结果符号与两数符号不同, 则表明溢出。 • 设An、Bn分别表示两个操作数的符号; Sn表示结果 的符号, 则有: 溢出=AnBnSn + AnBnSn
63+66=129 0,0111111 + 0,1000010 1,0000001
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

4.标志寄存器出栈指令POPF
• 功能: 将栈顶内容弹出送入标志寄存器中。 即↑(SP)→FLAGS。 • POPF指令与PUSHF指令互为逆过程。 • 【例3.3】将标志寄存器的单步标志TF置位。 • PUSHF ;(FLSGS)→↓(SP) • POP AX ;(SP)→AX • OR AX, 0100H ;设置D8=TF=1 • PUSH AX ;(AX)→↓(SP) • POPF;(SP)→↓FLAGS, • 即(AX)→↓FLAGS
第3章
• 3.1
汇编语言
8086的寻址方式
• 3.2 8086的指令系统 • 3.3 ASM汇编语言知识
8086 CPU的指令系统的基本指令
• 包括数据传送类指令、算术运算类指令、 位操作类指令、串操作类指令、控制转 移类指令、处理机控制类指令。后几节 将分别介绍这些指令的语句格式和功能。
8086 CPU的指令的共同的规律
• 执行:1234H→AX • 5678H→BX • (AX)+(BX)→AX • 执行后:(AX)=68ACH,(BX)=5678H
3 直接寻址
• 汇编格式:①含有变量的地址表达式。 • ②段寄存器名:[EA] 。 • 功能:指令下一字单元的内容是操作数的偏 移地址EA。 • 图形表示:
【例3.1.3】
1.立即寻址
立即寻址方式中,指令操作码和操作数都在存储器代码段 中。 汇编格式:n(n为立即操作数,是用8位或16位二进制补 码表示的有符号数) 功能:操作数存放在指令代码中,指令下一单元的内容为 立即操作数n。 【例3.1.1】MOV AX, 10 执行后(AX)=? 该例中源操作数为立即寻址方式,立即数为10,存放在 指令的下一单元。 执行:10→AX 执行后:(AX)=000AH
2.数据交换指令XCHG
• 语句格式:XCHG OPD,OPS • 功能:将源地址与目的地址中的内容互换。即 (OPD)→OPS,(OPS)→OPD。 【例3.2】寄存器与存储器之间数据交换。 • MOV AX,5678H ;(AX)=5678H • MOV BX,0FFFFH ;(BX)=0FFFFH • XCHG AX,BX ;(AX)=0FFFFH ,(BX)=5678H
7 相对基址变址寻址
• 基址加变址寻址方式中,操作数的偏移地址EA 是指令中基址寄存器内容、变址寄存器内容、 位移量X三项之和,操作数在存储器中。 • 汇编格式:X [BR+IR] • 图形表示:
操作数偏移地址EA计算方法如下
8 跨段问题
• 按前述规定:若选用BP作间址基址寄存器、变 址寄存器或基址寄存器,则操作数默认在堆栈 段,操作数的物理地址PA由堆栈段寄存器SS的 内容左移4位与偏移地址EA相加后形成;否则, 操作数默认在数据段,操作数的物理地址PA由 数据段寄存器DS的内容左移4位与偏移EA相加 后形成。该规定为系统默认状态。当要否定默 认状态,到非约定段寻找操作数时,必须用跨 段前缀指明操作数的段寄存器名。 • 汇编格式:段寄存器名:操作数地址。 • 功能:段寄存器名指明操作数属哪个段。
偏移地址EA计算方法如下: [SI]+X [DI]+X EA= [BX]+X [BP]+X
【例3.1.5】
• 设执行前(AX)=0040H,(BX)=0030H,(DS) =2000H,(20036H)=0050H • 执行指令:ADD 6[BX],AX • 执行后:(AX)=?,(BX)=?, • (DS)=?,(20036H)=? • 执行:(20036H)+(AX) →20036H • 执行后:(AX)=0040H,(BX)=0030H, (DS)=2000H,(20036H)=0090H。
• 寄存器和存储器内容为:(AX)=1212H,BUF 为数据段定义的变量,其偏移地址是2000H, (DS)=3000H,(32000H)=4545H。 • 执行指令:MOV AX ,BUF • 执行后:(AX)=? • 图形表示:
• 执行:(32000H)→AX • 执行后:(AX)=4545H
4 寄存器间接寻址
• 寄存器间接寻址方式中,寄存器的 内容为操作数的偏移地址EA,操作 数在存储器中。 • 汇编格式:[R] • 功能:操作数存放在存储器,寄存 器R存放操作数的偏移地址EA。
偏移地址EA计算方法如下:
[SI] [DI] [BX] [BP] SI作间址寄存器。 DI作间址寄存器。 BX作间址寄存器。 BP作间址寄存器。
2 寄存器寻址
• 寄存器寻址方式的操作数在指令指明的 寄存器中。 • 汇编格式:R 其中R表示寄存器名。 • 功能:操作数直接存放在寄存器R中。 • 图形表示: • R • 指令 操作数
【例3.1.2】
• 下列程序执行后,(AX)=?,(BX)=? • • • MOV AX,1234H MOV BX,5678H ADD AX,BX
2.出栈指令POP
• 语句格式: POP OPD • 功能: 将栈顶元素弹出送至某一寄存器、 段寄存器(除CS外)或存储器,堆栈指针 加2。 • 从POP指令功能可看出,该指令为PUSH指令 的逆过程。 • 即: • ①([SP])→(OPD)7~0 (SP)+1→SP • ②([SP])→(OPD)15~8 (SP)+1→SP
3.1.2
对端口的寻址方式
计算机中主要有两种I/O寻址方式:独立编 址和统一编址。 独立编址的特点是:存储器和I/O端口在两个独 立的地址空间中,访问I/O端口用专用的命令。 统一编址的特点是:存储器和I/O端口共用统一 的地址空间,I/O端口作为存储器的某些存储单 元,所有访问存储器的指令都可用于I/O端口。 8086/8088一般对I/O端口采用独立编址管理, CPU用16位地址去访问端口空间,端口空间的大 小为64KB。对端口的寻址方式有两种:直接寻址 和间接寻址。
【例3.1.6】跨段前缀示例。
• MOV AX,DS:[BP] ; • MOV CX,SS:[SI] • 该例中,DS:,SS:均为跨段前缀,此时 默认状态无效,操作数的物理地址PA由段 寄存器内容左移4位加偏移EA形成。上述2 条指令的源操作数物理地址分别为: • PA1 =(DS)左移4位+[BP] • PA2 =(SS令 为 数 据 传 送 指 令 操 作 符 , ADD指令为加法指令操作符,三条指令皆为双 操作数指令。第一、二条指令AX、BX皆为目的 操作数地址,为寄存器寻址方式。第三条指令中, AX为目的操作数地址,BX为源操作数地址。源 地址和目的地址皆为寄存器寻址方式。
• 图形表示:
3.查表转换指令 XLAT
• 语句格式:XLAT OPS或XLAT • 功能:将(BX)为首址(AL)为 位移量的字节存储单元中的数据 送AL寄存器。即 ([BX+AL])→AL。
3.2.1.2
堆栈操作指令
• 1.进栈指令PUSH • 2.出栈指令POP
1.进栈指令PUSH
• 语句格式: PUSH OPS • 功能:将寄存器、段寄存器或存储器中 的一个字数据压入堆栈,堆栈指针减2。 • 即: • ①(SP)-1→SP,(OPS)15~8→[SP] • ②(SP)-1→SP ,(OPS)7~0→[SP]
图形表示如下:
6.基址变址寻址
基址变址寻址方式中,操作数的偏移地址EA 为指令中基址寄存器(BR)内容、变址寄存 器(IR)内容之和,操作数在内存中。 汇编格式:[BR][IR]
有效地址EA=
SI DI + BX BP
MOV AX, [BX][DI] PA=(DS)×24+(BX)+(DI) 或 MOV AX, [BP+DI] PA=(SS)×24+(BX)+(DI) MOV AX, ES:[BX][SI] PA=(ES)×24+(BX)+(SI) 基址变址寻址方式适于数组、字符串、表格的处 理,它必须是一个基址寄存器和一个变址寄存器 的组合,下面两种形式是错误的: MOV AX, [BX][BP] MOV AX, [SI][DI]
EA=
【例3.1.4】寄存器和存储器内容分别为:(AX) =0,(BP)=0030H,(SS)=2000H,(20030H) =1234H • 执行指令:MOV AX ,[BP] • 执行后:(AX)=?,(BP)=?,(SS)=?, (20030H)=? • 图形表示如下:
5 寄存器相对寻址
• 该寻址方式中,操作数的偏移地址EA为寄存器 的内容加位移量,操作数在存储器中。 • 汇编格式:X[R](X表示位移量,是8位或16位 二进制补码表示的有符号数) • 功能:操作数存放在存储器,寄存器R的内容 加位移量X为操作数的偏移地址EA。 • 图形表示如下:
1.直接寻址 是由指令直接给出所要找的端口地址,端口的直 接寻址方式所提供的直接地址是8位的,即寻址范 围仅为0~255。端口的直接地址不能用任何括号 括起,不能理解为立即数。
2.间接寻址 必须把16位的端口地址放在寄存器DX中,用DX 进行端口的间接寻址,端口的间接寻址只能使用 DX寄存器进行,并且对端口的间接寻址所用的寄 存器DX是不加任何括号的,不能理解为寄存器寻 址。
3.2.1.1
通用数据传送指令
• 1.传送指令MOV • 2.数据交换指令XCHG • 3.查表转换指令 XLAT
• 1.传送指令MOV • 语句格式:MOV OPD,OPS • 功能:将源操作数传送入目的地址, 源地址内容不变。即(OPS)→OPD。 • 下图2.1描述了MOV指令在传送数据时 允许传送的路径及类型。 MOV AL,BUF2 MOV BUF1,AL
l大多数数据传送类指令、算术运算类指令、位操作
类指令及串操作类指令,其双操作数指令有相同的 语句格式和操作规定。 • 语句格式: • [标号:] 操作符 OPD, OPS [;注释] • 算术运算和位操作类指令的部分单操作数指令有相 同的语句格式和操作规定。 • 语句格式:[标号:] 操作符 OPD [;注释]
相关文档
最新文档