第2章数据定义与传送哦ppt课件_第1页
第2章数据定义与传送哦ppt课件_第2页
第2章数据定义与传送哦ppt课件_第3页
第2章数据定义与传送哦ppt课件_第4页
第2章数据定义与传送哦ppt课件_第5页
已阅读5页,还剩131页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、微机原理与汇编语言微机原理与汇编语言微机原理与汇编语言微机原理与汇编语言2.1 数据的定义数据的定义2.2 数据的传送数据的传送 2.3 汇编言语上机操作汇编言语上机操作微机原理与汇编语言微机原理与汇编语言2.1.1 2.1.1 数据段数据段2.1.2 2.1.2 数据定义数据定义 微机原理与汇编语言微机原理与汇编语言汇编言语程序定义的汇编言语程序定义的“数据数据 :1 1 变量变量VariableVariable 有一个名字,运转过程中值能够发生变化,定义有一个名字,运转过程中值能够发生变化,定义时可以时可以 设置设置“初始值。初始值。2 2 常数常数ConstantConstant可以直接

2、写在指令内,也可以存放在数据段内。可以直接写在指令内,也可以存放在数据段内。3 3 缓冲区缓冲区BufferBuffer从输入设备输入假设干数据时,需求在数据段里事先留从输入设备输入假设干数据时,需求在数据段里事先留出出 必要的存储单元,称为必要的存储单元,称为“输入缓冲区。输入缓冲区。输出一批数据时,需求把输出内容事先存放在假设干内输出一批数据时,需求把输出内容事先存放在假设干内存存 单元中,称为单元中,称为“输出缓冲区。输出缓冲区。微机原理与汇编语言微机原理与汇编语言2.1.1 2.1.1 数据段数据段DATASEGMENT ; 在这里定义数据在这里定义数据 DATAENDSDATA:程序

3、员给这个段起的名字。程序员给这个段起的名字。SEGMENT:保管字,阐明一个段从这里开场。:保管字,阐明一个段从这里开场。ENDS:保管字,阐明一个段到此终了。保管字,阐明一个段到此终了。 ;分号后面的文字是分号后面的文字是“注释,不参与汇注释,不参与汇编编微机原理与汇编语言微机原理与汇编语言 伪指令: 阐明性的语句;汇编后不会产生对应的机器指令。2.1.1 2.1.1 数据段数据段数据段名数据段名SEGMENT 数据段名数据段名ENDS微机原理与汇编语言微机原理与汇编语言2.1.2 2.1.2 数据定义数据定义数据定义伪指令:数据定义伪指令:变量名变量名 数据定义伪指令助记符数据定义伪指令助

4、记符 数据数据 ,数据,数据数据定义伪指令助记符:数据定义伪指令助记符: DBDefine Byte:每个数据占用一个字节:每个数据占用一个字节8b DWDefine Word:每个数据占用一个字:每个数据占用一个字16b DDDefine Double Word:每个数据占用一个双字:每个数据占用一个双字(32b) DQDefine QuartWord:每个数据占用:每个数据占用8个字节个字节(64b) DTDefine Ten Byte:每个数据占用:每个数据占用10个字节个字节80b微机原理与汇编语言微机原理与汇编语言DATA SEGMENTXdb-1, 255, A, 3+2, ? d

5、b“ABC, 0FFH,11001010BYdb3 dup?DATA ENDS111111111111111101000001000001010000000001000001010000100100001111111111110010100000000000000000000000000000H0001H0002H0003H0004H0005H0006H0007H0008H0009H000AH000BH000CH000DH偏移地址内容数据定义举例数据定义举例1:有符号数用它的补码存储有符号数用它的补码存储字符用字符用ASCII代码存储代码存储?表示一个尚未确定的值表示一个尚未确定的值DUP表示

6、反复定义表示反复定义变量名代表这个单元的地址变量名代表这个单元的地址微机原理与汇编语言微机原理与汇编语言0FEH0FFH00H80H0FFH0FFH42H41H78H56H34H12H80H0E5H0F9H0FFH00H00H08H00H0000H0001H0002H0003H0004H0005H0006H0007H0008H0009H000AH000BH000CH000DH000EH000FH0010H0011H0012H0013H偏移地址内容变量名ZWDSEG SEGMENTZDW -2, -32768, 65535, ABWDD 12345678H, -400000DW Z, W-ZDS

7、EG ENDS 数据定义举例数据定义举例2:多字节数据的高位存放在较高地址单元中多字节数据的高位存放在较高地址单元中出如今数据部分的变量名代表这个变量的偏移地址出如今数据部分的变量名代表这个变量的偏移地址微机原理与汇编语言微机原理与汇编语言 变量名变量名 符号地址:表示存储空间的首地址符号地址:表示存储空间的首地址 符号地址可有可无符号地址可有可无 有符号地址,可以方便存取有符号地址,可以方便存取 变量属性:段属性变量属性:段属性SEG、偏移属性、偏移属性OFFSET、类型、类型TYPE、长度、长度LENGTH、大小、大小SIZE数据定义伪指令:数据定义伪指令:变量名变量名 数据定义伪指令助记

8、符数据定义伪指令助记符 数据数据 ,数据,数据2.1.2 2.1.2 数据定义数据定义DATA SEGMENTXdb-1, 255, A, 3+2, ?DATA ENDS微机原理与汇编语言微机原理与汇编语言变量变量X,Y,Z,W的属性的属性变量变量名名段属性段属性SEG偏移地址偏移地址OFFSET类类 型型TYPE长长 度度LENGTH大大 小小SIZEXDATA0000H111YDATA000AH133ZDSEG0000H212WDSEG0008H212DATASEGMENTXdb-1, 255, A, 3+2, ? db“ABC, 0FFH,11001010BYdb3 dup?DATAEN

9、DSDSEGSEGMENTZDW -2, -32768, 65535, ABWDD 12345678H, -400000DW Z, W-ZDSEGENDS 微机原理与汇编语言微机原理与汇编语言操作数:操作数:是用逗号分割的常数表达式是用逗号分割的常数表达式 ? 不确定不确定 dup 复制操作符复制操作符 可以是字符串可以是字符串 可以是变量名可以是变量名2.1.2 2.1.2 数据定义数据定义数据定义伪指令:数据定义伪指令:变量名变量名 数据定义伪指令助记符数据定义伪指令助记符 数据数据 ,数据,数据微机原理与汇编语言微机原理与汇编语言例:例:X dw 23 Y db 23Z db ?M dw

10、 ? db 3,2 dup(1,2) dw 3,2 dup(1,2)317HY17H00HX?Z?M121230012001202.1.2 2.1.2 数据定义数据定义微机原理与汇编语言微机原理与汇编语言例:例:str1 db a, b str2 db abstr3 dw a, b str4 dw ab 61 62h str5 dw abc61H62Hstr161H62Hstr261H0062H00str362H61H str4 str1 db hello str2 dw hello2.1.2 2.1.2 数据定义数据定义微机原理与汇编语言微机原理与汇编语言 mess1 db 12, 13 m

11、ess2 dw 24 mess3 dw mess1 mess4 dd mess2 mess3 mess1的偏移地址的偏移地址mess4mess2的偏移地址的偏移地址mess2的段基址的段基址2.1.2 2.1.2 数据定义数据定义微机原理与汇编语言微机原理与汇编语言某数据段内有如下数据定义:某数据段内有如下数据定义:X db 30, 30H, ABC, 2-3, ?, 11001010B dw 0FFH,-2, “CDY dd 20 dup15, 3 dup?, 0Z db 3 dup?Wdw Z-X假设变量假设变量X的偏移地址为的偏移地址为20H。1写出变量写出变量X各数据在内存中的详细位置

12、和内存单元的值。各数据在内存中的详细位置和内存单元的值。2写出变量写出变量Y,Z的偏移地址。的偏移地址。3写出变量写出变量W对应的内存单元的值。对应的内存单元的值。微机原理与汇编语言微机原理与汇编语言2.2.1 2.2.1 指令格式指令格式2.2.2 2.2.2 程序段程序段2.2.32.2.3根本传送指令根本传送指令2.2.4 2.2.4 其他传送指令其他传送指令2.2.5 2.2.5 堆栈堆栈2.2.62.2.6操作数表达式操作数表达式微机原理与汇编语言微机原理与汇编语言汇编言语程序由假设干汇编言语程序由假设干“语句组成,每个语句组成,每个“语句占用一语句占用一行。行。三种类型语句:三种类

13、型语句:指令语句:包含一条符号指令,与一条机器指令相对应,指令语句:包含一条符号指令,与一条机器指令相对应, 汇编以后是机器指令的二进制代码,这汇编以后是机器指令的二进制代码,这 个代码被称为个代码被称为“目的目的Object;伪指令语句:一条阐明性的语句。伪指令本身汇编后不产伪指令语句:一条阐明性的语句。伪指令本身汇编后不产 生生“目的目的 。注释行:书写阐明性文字,不进展注释行:书写阐明性文字,不进展“汇编,也不产生汇编,也不产生 “目的。目的。微机原理与汇编语言微机原理与汇编语言 与与CPU有关有关不同的不同的CPU类型有类型有不同的指令系统不同的指令系统与汇编程序有关与汇编程序有关汇编

14、程序的版本不同,汇编程序的版本不同,所提供的伪指令不同所提供的伪指令不同使使CPU产生动作产生动作不产生不产生CPU动作动作指令的执行是在指令的执行是在程序的运转期间程序的运转期间在程序执行前汇编期间在程序执行前汇编期间由汇编程序来处置由汇编程序来处置产生目的代码产生目的代码不产生目的代码不产生目的代码MOV AX,1234HLEA AX,1234HDB.MODEL SMALL微机原理与汇编语言微机原理与汇编语言标号标号: 操作码操作码 操作数操作数 ;注释注释微机原理与汇编语言微机原理与汇编语言 操作数操作数 是指令的操作对象,指令的操作数可以是指令的操作对象,指令的操作数可以0 03 3个

15、。个。两个操作数时,右面的操作数称为两个操作数时,右面的操作数称为“源操作数,左面的操作源操作数,左面的操作数称为数称为“目的操作数。目的操作数。“源操作数参与指令操作,不保管源操作数参与指令操作,不保管结果,内容不会改动。结果,内容不会改动。“目的操作数参与指令操作,还保目的操作数参与指令操作,还保管指令的操作结果,指令执行后,目的操作数的内容被改动。管指令的操作结果,指令执行后,目的操作数的内容被改动。 ; ;注释注释 用来添加一些阐明,例如阐明本行指令的功能。用来添加一些阐明,例如阐明本行指令的功能。标号标号: 操作码操作码 操作数操作数 ;注释注释微机原理与汇编语言微机原理与汇编语言(

16、1)存放器操作数:包括段存放器、数据存放器、地址存放器存放器操作数:包括段存放器、数据存放器、地址存放器例如:例如:MOV BX, AX功能:功能:AX存放器内容送入存放器内容送入BX存放器。存放器。 AX是是“源操作数,写在右边,指令执行后,它的内容不会源操作数,写在右边,指令执行后,它的内容不会被改动。被改动。 BX是是“目的操作数,写在左边,指令执行后,它的内容将目的操作数,写在左边,指令执行后,它的内容将被改动。被改动。留意:公用存放器留意:公用存放器IP/EIP和和FLAGS/EFLAGS不能作为操作数不能作为操作数 出如今指令中。出如今指令中。微机原理与汇编语言微机原理与汇编语言2

17、立刻数操作数:二进制立刻数操作数:二进制/十进制十进制/十六进制常数,可求值的十六进制常数,可求值的 表达式,字符,标号等。表达式,字符,标号等。常数常数300送入送入BX存放器存放器MOV BX, 300或者:或者:MOV BX, 150*2DATA段的段基址送段的段基址送DS MOV AX, DATA MOV DS, AX留意:立刻数不能用作留意:立刻数不能用作“目的操作数。目的操作数。微机原理与汇编语言微机原理与汇编语言 为了对存储器的一个单元进展访问,需求给出这个单元的为了对存储器的一个单元进展访问,需求给出这个单元的 段基址和偏移地址。段基址和偏移地址。 大多数情况下,指令运用大多数

18、情况下,指令运用DS存放器的内容作为操作数的段存放器的内容作为操作数的段 基址,指令中不需求再指出段基址。基址,指令中不需求再指出段基址。 指出偏移地址的方法有两种:直接的和间接的。指出偏移地址的方法有两种:直接的和间接的。微机原理与汇编语言微机原理与汇编语言(1)直接偏移地址:在指令里直接写出存储单元的偏移地址。直接偏移地址:在指令里直接写出存储单元的偏移地址。DATA SEGMENTA DB 12, 34, 56ARRAY DW 55, 66, 77, 88, 99DATA ENDS把变量数组把变量数组A的前两个数据送的前两个数据送BL,BH存放器:存放器: MOV BL, A ; 也可以

19、写作也可以写作 MOV BL, A MOV BH, A+1 ; 或或MOV BH, A+1 ,MOV BH, A 1 A代表数据代表数据“12的偏移地址,的偏移地址,A+1是数据是数据“34的偏移地址的偏移地址。 微机原理与汇编语言微机原理与汇编语言(1)直接偏移地址:在指令里直接写出存储单元的偏移地址。直接偏移地址:在指令里直接写出存储单元的偏移地址。DATA SEGMENTA DB 12, 34, 56ARRAY DW 55, 66, 77, 88, 99DATA ENDS假设曾经知道假设曾经知道A的偏移地址是的偏移地址是0000H,前面的指令可以写作:,前面的指令可以写作: MOV BL

20、, 0000H ; 方括号不能省略方括号不能省略 MOV BH, 0001H ; 方括号不能省略方括号不能省略 常数地址格式普通没有适用价值。常数地址格式普通没有适用价值。 上面的两条指令可以用一条指令替代,效果一样:上面的两条指令可以用一条指令替代,效果一样: MOV BX, 0000H ; 取地址取地址0000H开场的两字节开场的两字节, 送入送入BL和和BH微机原理与汇编语言微机原理与汇编语言举例举例1:假设曾经定义:假设曾经定义:XDW350 MOV BX, X MOV BL, X举例举例2:MOV AL, 2100HMOV AX, 2100HMOV EAX, 2100H; ; 是是1

21、616位传送指令,正确位传送指令,正确; ; 是错误的,操作数类型不匹配是错误的,操作数类型不匹配; ; 正确,正确,8 8位传送指令,位传送指令,2100H2100H是字节地址是字节地址; ; 正确,正确,1616位传送指令,位传送指令,2100H2100H是字地址是字地址微机原理与汇编语言微机原理与汇编语言2间接偏移地址:间接偏移地址:把存储单元的偏移地址先装入某个存放器,经过这个存放器来把存储单元的偏移地址先装入某个存放器,经过这个存放器来找到这个存储单元,也称为找到这个存储单元,也称为“存放器间接寻址。存放器间接寻址。留意留意:16位位80X86微处置器只需微处置器只需BX,BP,SI

22、,DI这这4个存放器可个存放器可以用来以用来“间接寻址。不另加阐明的话,运用间接寻址。不另加阐明的话,运用BP时自动用时自动用SS的的值作为段基址,运用值作为段基址,运用BX,SI,DI时自动用时自动用DS的值作为段基址的值作为段基址。举例举例1:曾经定义:曾经定义:A DB 12, 34MOV SI, OFFSET A ; 把变量把变量A的偏移地址装入的偏移地址装入SI; OFFSET是保管字,表示取出后面变量的偏移地址是保管字,表示取出后面变量的偏移地址MOV BL, SI; 变量变量A的第一个值送的第一个值送BLMOV BH, SI+1 ; 第二个值送第二个值送BH, MOV BH, 1

23、SI微机原理与汇编语言微机原理与汇编语言举例举例2:曾经定义:曾经定义:ARRAY DW 35, 73, 27, 780, 12, 55取出字数组取出字数组ARRAY的第的第3个元素送入个元素送入AX:; 方法方法1MOV AX, ARRAY 4;ARRAY代表数组首地址,位移量代表数组首地址,位移量= 4,直接寻址,直接寻址;也可以写作;也可以写作MOV AX, ARRAY+4;方法;方法2MOV BX, OFFSET ARRAY ;数组首地址装入;数组首地址装入BXMOV AX, BX+4 ; 第第3个元素距数组首元素个元素距数组首元素4个字节个字节; 方法方法3MOV BX, 4 ;第;

24、第3个元素距数组首地址的位移量装入个元素距数组首地址的位移量装入BXMOV AX, ARRAY BX;ARRAY代表数组首地址,代表数组首地址,BX中是位移量中是位移量微机原理与汇编语言微机原理与汇编语言2间接偏移地址:间接偏移地址: 基址变址寻址:基址变址寻址: 用两个存放器结合起来寻址。从用两个存放器结合起来寻址。从BX, BP和和SI, DI中各中各 选出一个运用。选出一个运用。 出现出现BP时运用时运用SS作为段基址存放器,其它情况用作为段基址存放器,其它情况用DS。 例:例:MOV AX, BX+SI ;基址;基址BX变址变址SI寻址寻址微机原理与汇编语言微机原理与汇编语言 立刻数寻

25、址立刻数寻址 存放器寻址存放器寻址 存储器寻址存储器寻址微机原理与汇编语言微机原理与汇编语言例:例:MOV AL,05H;(AL)05HMOV AX,0102H ;(AX)0102HMOV AX,abMOV AX,0B012H微机原理与汇编语言微机原理与汇编语言例:例:MOV BX,1234H ;(BX)1234HMOV AX,BX;(AX)(BX)可用存放器:段存放器DS,CS,SS,ES数据存放器AX,BX,CX,DX地址存放器BX,BP,SI,DI微机原理与汇编语言微机原理与汇编语言例例:MOV AX,2000H ;(AX)DS:2000HMOV AX,ARRAY ;(AX)ARRAY微

26、机原理与汇编语言微机原理与汇编语言 例:例: MOV AX,BX ;(AX)DS: (BX) 可用存放器:地址存放器BX,BP,SI,DIBP-SS;BX、SI、DI-DS微机原理与汇编语言微机原理与汇编语言 例:例: MOV AX,6SI ;(AX)DS: (SI+6) 或或MOV AX,SI+6 或或MOV AX,COUNTSI微机原理与汇编语言微机原理与汇编语言例:例: MOV AX,BXDI ;(AX)DS: (BX+DI) 或或 MOV AX,BX+DI可用存放器:地址存放器BX,BP,SI,DI 基址存放器:BX、BP 变址存放器:SI、DI微机原理与汇编语言微机原理与汇编语言 例

27、:例: MOV AX,MASKBXSI 或或MOV AX,MASKBX+SI 或或MOV AX,MASK+BX+SI微机原理与汇编语言微机原理与汇编语言 立刻数寻址立刻数寻址 存放器寻址存放器寻址 存储器寻址存储器寻址微机原理与汇编语言微机原理与汇编语言MOV AX, ARRAY4MOV AX, BX MOV AX, BX+2MOV AX, ARRAY BXMOV AX, BX+SIMOV AX, BX+DI+2;直接寻址,偏移地址;直接寻址,偏移地址= ARRAY+4;存放器间接寻址;存放器间接寻址;存放器相对寻址;存放器相对寻址;存放器相对寻址;存放器相对寻址;基址;基址BX变址变址SI寻

28、址寻址;相对基址变址寻址;相对基址变址寻址微机原理与汇编语言微机原理与汇编语言 请指出以下各指令的操作数所运用的寻址方式。请指出以下各指令的操作数所运用的寻址方式。 1 MOV SI,2100H 2 SBB DISPBX,7 3 AND DI,AX 4 OR AX,609EH 5 MOV BXDI30H,CX 6 PUSH ES:BP微机原理与汇编语言微机原理与汇编语言 (BX)=637DH,(SI)=2A9BH, D=7237H,试确定在以,试确定在以下各种寻址方式下的偏移地址是多少?下各种寻址方式下的偏移地址是多少? (1) 直接寻址直接寻址 (2) 运用运用BX的间接寻址的间接寻址 (3

29、) 运用运用BX的存放器相对寻址的存放器相对寻址 (4) 基址变址寻址基址变址寻址微机原理与汇编语言微机原理与汇编语言 现有现有(DS)=2000H,(BX)=0100H,(SI)=0002H,(20190)=12H,(20191)=34H,(20192)=56H,(20193)=78H,(21200)=2AH,(21201)=4CH,(21202)=B7H,(21203)=65H,试阐,试阐明以下各条指令执行完后明以下各条指令执行完后AX存放器的内容。存放器的内容。 (1) MOV AX,1200H (2) MOV AX,1200H (3) MOV AX,1100BX (4) MOV AX,

30、1100BXSI微机原理与汇编语言微机原理与汇编语言3232位位80 x8680 x86微处置器的存储器寻址:微处置器的存储器寻址:偏移地址偏移地址=基址基址+比例因子比例因子变址变址+位移量位移量+微机原理与汇编语言微机原理与汇编语言 MOV AX, ARRAY4 MOV AX, ECX MOV AX, EAX+4 MOV AX, EBX+ECX MOV AX, EBP+EDX+4 MOV AX, EBX+4*ESI MOV AX, 8*EBP+ECX+6 微机原理与汇编语言微机原理与汇编语言四种成分四种成分16位寻址位寻址32位寻址位寻址位移量位移量0,8,16位位0,8 ,16 ,32位

31、位基址寄存器基址寄存器BX,BP任何任何32位通用寄存器位通用寄存器变址寄存器变址寄存器SI,DI除除ESP以外的以外的32位通用寄存器位通用寄存器比例因子比例因子无无1,2,4,8微机原理与汇编语言微机原理与汇编语言程序段常见格式程序段常见格式:CODESEGMENTASSUMECS: CODE, DS: DATASTART:MOV AX, DATAMOV DS, AX; 其他指令其他指令MOV AX, 4C00HINT21HCODEENDSENDSTART微机原理与汇编语言微机原理与汇编语言DATASEGMENT ADB55DATAENDSDSEGSEGMENT XDB10DSEGENDS

32、 CODE SEGMENTASSUME DS: DATA, ES: DSEG,CS:CODE MOV AX, DATA MOV DS, AX MOV AX, DSEG MOV ES, AXCODE ENDS指令指令 MOV AL, A ;自动按照自动按照 MOV AL, DS:0000H的格式汇编,执行后的格式汇编,执行后AL=55。指令指令 MOV DL, X ;自动按照自动按照 MOV DL, ES:0000H的格式汇编,执行后的格式汇编,执行后DL=10。微机原理与汇编语言微机原理与汇编语言为了得到正确结果,上面第为了得到正确结果,上面第4条指令改写为:条指令改写为:MOV DL, ES

33、: DI ; 执行后执行后(DL) = 10, 结果正确结果正确 这条指令这条指令“显式地指定了段基址,汇编出来的机器指令比显式地指定了段基址,汇编出来的机器指令比 MOV DL, DI多一个字节,称为多一个字节,称为“段跨越前缀。段跨越前缀。MOV SI, OFFSET A ;A的偏移地址装入的偏移地址装入SIMOV DI, OFFSET X ;X的偏移地址装入的偏移地址装入DIMOV AL, SI ;取;取A的值送的值送ALMOV DL, DI ;取;取X的值送的值送DL执行的结果:执行的结果:(AL) = 55 正确,正确,(DL) = 55 错误错误微机原理与汇编语言微机原理与汇编语言

34、程序段常见格式程序段常见格式:CODESEGMENTASSUMECS: CODE, DS: DATASTART:MOV AX, DATA MOV DS, AX ; 其他指令其他指令 MOV AX, 4C00H INT21HCODEENDSENDSTART微机原理与汇编语言微机原理与汇编语言指令指令 INT 21H 表示调用由操作系统提供的表示调用由操作系统提供的21H号效力程序。号效力程序。 AH中为中为“功能号,功能号,AH=4CH表示前往操作系统的操作。表示前往操作系统的操作。 AL中的代码称为中的代码称为“前往代码,前往代码,00H表示表示“正常前往。正常前往。END 伪指令表示整个程序

35、到此终了,后面的标号伪指令表示整个程序到此终了,后面的标号START表示表示 程序入口地址。程序入口地址。微机原理与汇编语言微机原理与汇编语言程序段常见格式程序段常见格式:CODESEGMENTASSUMECS: CODE, DS: DATASTART:MOV AX, DATAMOV DS, AX; 其他指令其他指令MOV AX, 4C00HINT21HCODEENDSENDSTART微机原理与汇编语言微机原理与汇编语言MOV指令的普通格式:指令的普通格式:MOV指令把源操作数指令把源操作数(source)传送到目的操作数传送到目的操作数(destination) MOV dest,src微机

36、原理与汇编语言微机原理与汇编语言源操作数可以是:存放器、存储器、立刻数;源操作数可以是:存放器、存储器、立刻数;目的操作数可以是:存放器、存储器。目的操作数可以是:存放器、存储器。IMRIMR(a)正确的数据传送操作(b)错误的数据传送操作SS微机原理与汇编语言微机原理与汇编语言微机原理与汇编语言微机原理与汇编语言IMRIMR(a)正确的数据传送操作(b)错误的数据传送操作SS微机原理与汇编语言微机原理与汇编语言MOV CL, DH ;字节传送指令,;字节传送指令,DH存放器内容送入存放器内容送入CLMOV ECX, EDX ; 双字传送指令,双字传送指令,EDX存放器内容送入存放器内容送入E

37、CXMOV AX, CS ; 字传送指令,字传送指令,CS存放器内容送入存放器内容送入AXMOV SS, CX ; 字传送指令,字传送指令,CX存放器内容送入存放器内容送入SSMOV MOV 指令举例存放器、存放器操作数:指令举例存放器、存放器操作数:正确:正确:错误:错误:MOV CL, DX MOV ESI, BHMOV CS , AXMOV DS, CS;操作数类型不匹配;操作数类型不匹配;操作数类型不匹配;操作数类型不匹配; CS存放器不能作为目的操作数存放器不能作为目的操作数; 不能同时为段存放器不能同时为段存放器微机原理与汇编语言微机原理与汇编语言MOV AL, 30H ;字节传送

38、指令,执行后;字节传送指令,执行后AL= 30HMOV AX, 30H ;字传送指令,执行后;字传送指令,执行后AX= 0030HMOV EAX, 30H ;双字传送指令,执行后;双字传送指令,执行后(EAX) = 0000 0030HMOV AL, -5 ;字节传送指令,执行后;字节传送指令,执行后AL= 0FBHMOV AX, -5 ;字传送指令,执行后;字传送指令,执行后AX= 0FFFBHMOV MOV 指令举例立刻数、存放器操作数:指令举例立刻数、存放器操作数:正确:正确:错误:错误:MOV 30H, ALMOV AL, 300;立刻数不能用作目的操作数;立刻数不能用作目的操作数;

39、源操作数超出范围源操作数超出范围微机原理与汇编语言微机原理与汇编语言MOV MOV 指令举例存储器、存放器操作数:指令举例存储器、存放器操作数:正确:正确:错误:错误:MOV BP, BL; 字节传送指令,字节传送指令,BL存放器内容送存放器内容送SS:BPMOV BX, AX ; 字传送指令,字传送指令,AL内容送内容送DS:BX, ; AH内容送内容送DS:BX+1MOV DX, SI ; 字传送指令,字传送指令, DS: SI内容送入内容送入DL, ;DS: SI+1内容送入内容送入DH假设变量假设变量X_BYTE用用DB定义,变量定义,变量Y_WORD用用DW定义定义MOV DX, B

40、LMOV X_BYTE, AX; DX存放器不能用来存放器间接寻址存放器不能用来存放器间接寻址; 操作数类型不匹配操作数类型不匹配微机原理与汇编语言微机原理与汇编语言MOV MOV 指令举例存储器、立刻数操作数:指令举例存储器、立刻数操作数:正确:正确:错误:错误:MOV X_BYTE, -5 ; 字节传送指令,字节传送指令,-5(0FBH)送送X_BYTEMOV Y_WORD, -5 ;字传送指令,;字传送指令,-5(0FFFBH)送送Y_WORD假设变量假设变量X_BYTE用用DB定义,变量定义,变量Y_WORD用用DW定义定义MOV X_BYTE, 300MOV BX, 30H; 目的操

41、作数超出范围目的操作数超出范围; 操作数类型不能确定操作数类型不能确定微机原理与汇编语言微机原理与汇编语言错误:错误:MOV X_BYTE, SI MOV X_BYTE, K_BYTE MOV SS, DS两个操作数不能同时为存储器操作数或段存放器!两个操作数不能同时为存储器操作数或段存放器!; 不能同时为存储器操作数不能同时为存储器操作数; 不能同时为存储器操作数不能同时为存储器操作数;不能同时为段存放器操作数不能同时为段存放器操作数微机原理与汇编语言微机原理与汇编语言 DATA SEGMENT X DB 30H DATA ENDS DSEG SEGMENT A DB 31H DSEG EN

42、DS CODE SEGMENT ASSUME CS: CODE, DS: DATA,ES:DSEG START: MOV AX, DATA MOV DS, AX MOV AX,DSEG MOV ES,AX _ ;把把X的值传送给的值传送给AL _ ;把把A的值传送给的值传送给AH MOV AX, 4C00H INT 21H CODE ENDS END STARTMOV AL,XMOV AH,AMOV AL,0000HMOV AH,0000HMOV AH,ES:0000H微机原理与汇编语言微机原理与汇编语言MOV BYTE PTRBX, 20HMOV WORD PTRBX, 20HMOV DWO

43、RD PTRBX, 20HMOV BYTE PTRY_WORD, 20H MOV AL, BYTE PTRY_WORD MOV WORD PTRX_BYTE, 20H;20H送送DS:BX;20H送送DS:BX,00H送送DS:BX+1;00 00 00 20H送送DS:BX开场开场4个字节个字节;20H送变量送变量Y_WORD的第的第1个字节个字节;变量;变量Y_WORD的第的第1个字节送个字节送AL存放器存放器;00 20H送变量送变量X_BYTE开场的开场的2个字节个字节格式:type PTR expression微机原理与汇编语言微机原理与汇编语言普通格式:普通格式:LEA把源操作数的

44、偏移地址装入目的操作数。把源操作数的偏移地址装入目的操作数。LEA REG16, MEM;执行后执行后,DX= 1020H;执行后执行后,(BX)=4+20H2+1020H=1064H微机原理与汇编语言微机原理与汇编语言 例:例: LEA BX,LIST MOV BX,OFFSET LIST留意留意: OFFSET只能和简单的符号地址相连只能和简单的符号地址相连.如:如: MOV BX, OFFSET LISTSI ;非法指令非法指令微机原理与汇编语言微机原理与汇编语言例例2-1 编写程序,把编写程序,把4个元素的字节数组个元素的字节数组ARRAY清零。清零。DATASEGMENT ARRAY

45、DB4 DUP (?)DATAENDSCODESEGMENT ASSUMECS: CODE, DS: DATA START:MOV AX, DATAMOV DS, AXMOV ARRAY, 0;第一个元素清零;第一个元素清零MOV ARRAY+1, 0;第二个元素清零;第二个元素清零MOV ARRAY+2, 0;第三个元素清零;第三个元素清零MOV ARRAY+3, 0;第四个元素清零;第四个元素清零MOV AX, 4C00HINT21HCODEENDSENDSTART微机原理与汇编语言微机原理与汇编语言MOV AX, 0LEA BX, ARRAY ;数组;数组ARRAY首地址装入首地址装入B

46、XMOV WORD PTR BX, AX ;第一、第二个元素清零;第一、第二个元素清零MOV WORD PTR BX+2, AX ;第三、第四个元素清零;第三、第四个元素清零一次将两个元素同时清零:一次将两个元素同时清零:MOV WORD PTR ARRAY, 0 ;第一、第二个元素清零;第一、第二个元素清零MOV WORD PTR ARRAY+2, 0 ;第三、第四个元素清零;第三、第四个元素清零运用立刻数指令代码较长。把这个立刻数事先存放在存放器中:运用立刻数指令代码较长。把这个立刻数事先存放在存放器中:MOV AX, 0MOV WORD PTR ARRAY, AX ;第一、第二个元素清零

47、;第一、第二个元素清零MOV WORD PTR ARRAY+2, AX ;第三、第四个元素清零;第三、第四个元素清零把数组把数组ARRAY的首地址事先装入地址存放器,程序更简捷:的首地址事先装入地址存放器,程序更简捷:微机原理与汇编语言微机原理与汇编语言例例2-2 字数组字数组X的最后的最后2个元素值送入个元素值送入Y数组对应单元数组对应单元DATA SEGMENT XDW 55, 112, 37, 82 YDW 4 DUP (?)DATA ENDSCODE SEGMENT ASSUME CS: CODE, DS: DATA START: MOV AX, DATA MOVDS, AX MOVD

48、I, 4 ;第三个元素在数组内的位;第三个元素在数组内的位移移 MOVAX, XDI;取出;取出X数组第三个元素数组第三个元素 MOVYDI, AX;送入;送入Y数组第三个元素中数组第三个元素中 MOVAX, XDI+2 ;取出;取出X数组第四个元素数组第四个元素 MOVYDI+2, AX ;送入;送入Y数组第四个元素中数组第四个元素中 MOVAX, 4C00H INT 21HCODE ENDS END START微机原理与汇编语言微机原理与汇编语言功能:从存储器取出功能:从存储器取出4B,前面的,前面的2B送入指定的存放器,后面的送入指定的存放器,后面的2B 送入由指令操作码包含的段存放器。

49、送入由指令操作码包含的段存放器。格式:格式:LDSREG16, MEM32 ; 从存储器取出从存储器取出4B,送入,送入REG16和和DSLESREG16, MEM32 ; 从存储器取出从存储器取出4B,送入,送入REG16和和ESLFSREG16, MEM32 ; 从存储器取出从存储器取出4B,送入,送入REG16和和FSLGSREG16, MEM32 ; 从存储器取出从存储器取出4B,送入,送入REG16和和GS阐明:阐明:1LFS/LGS只能用于只能用于386及其后继机型中。及其后继机型中。2不影响标志位。不影响标志位。微机原理与汇编语言微机原理与汇编语言n例:例:LDS SI,10Hn

50、 执行前执行前: (DS)=C000H,(C0010H)=0180H,(C0012H)=2000Hn 执行后执行后:(SI)=0180H (DS)=2000H微机原理与汇编语言微机原理与汇编语言40 H00 H00 H30 H MOV BX, TABLEMOV BX, OFFSET TABLELEA BX, TABLELDS BX, TABLE LES BX, TABLE; (BX)=0040H; (BX)=1000H; (BX)=1000H; (BX)=0040H; (DS)=3000H; (BX)=0040H; (ES)=3000HTABLE=1000HTABLE+1 TABLE微机原理与

51、汇编语言微机原理与汇编语言格式:格式:CBW ;将;将AL存放器内容符号扩展成存放器内容符号扩展成16b,送入,送入AXCWD ;将;将AX存放器内容符号扩展成存放器内容符号扩展成32b, 送入送入DX(高位高位)和和AXCWDE ;将;将AX存放器内容符号扩展成存放器内容符号扩展成32b,送入,送入EAXCDQ ;将;将EAX存放器内容符号扩展成存放器内容符号扩展成64b, 送入送入EDX和和EAX功能:把功能:把8位的操作数扩展为位的操作数扩展为16/32位,或者把位,或者把16位的操作数扩位的操作数扩 展为展为32位,送入目的存放器。位,送入目的存放器。阐明:阐明: 1CWDE、CDQ是

52、是386后继机型新增的;后继机型新增的; 2主要用于有符号数除法之前对被除数位数进展扩展。主要用于有符号数除法之前对被除数位数进展扩展。微机原理与汇编语言微机原理与汇编语言举例:假设有举例:假设有EAX= 0000 8060H CBW CWD CWDE CDQ;AX= 0060H;DX= 0FFFFH,AX= 8060H; EAX )= 0FFFF 8060H; EDX )= 0000 0000H,( EAX )= 0000 8060H微机原理与汇编语言微机原理与汇编语言MOVZX REG16/REG32, REG8/MEM8/REG16 /MEM16功能:功能:将将8/16位存放器位存放器/

53、存储器操作数零扩展,送入存储器操作数零扩展,送入16/32位存放器位存放器MOVSX REG16/REG32, REG8/MEM8/REG16 /MEM16功能:功能:将将8/16位存放器位存放器/存储器操作数符号扩展,送入存储器操作数符号扩展,送入16/32位存放器位存放器举例:设有举例:设有AX= 8060HMOVZX EBX, AXMOVSX EBX, AXMOVSX EBX, AL;EBX= 0000 8060H;EBX= 0FFFF 8060H;EBX= 0000 0060H微机原理与汇编语言微机原理与汇编语言格式:格式:XCHG REG/MEM, REG/MEM功能:交换源、目的操

54、作数的内容。功能:交换源、目的操作数的内容。阐明:阐明: 1可以在存放器之间或者在存放器和存储器之间交换信息。可以在存放器之间或者在存放器和存储器之间交换信息。 2不允许运用段存放器。不允许运用段存放器。 3不影响标志位。不影响标志位。格式:格式:BSWAP REG32功能:交换功能:交换32位存放器的最高字节和最低字节、次高字节和次低位存放器的最高字节和最低字节、次高字节和次低 字节。字节。阐明:阐明:486后继机型新增指令。后继机型新增指令。微机原理与汇编语言微机原理与汇编语言举例举例1 1:存放器和存放器交换:存放器和存放器交换mov ax,1234hmov ax,1234hmov bx

55、,5678hmov bx,5678hxchg ax,bx xchg ax,bx xchg ah,alxchg ah,al举例举例2 2:存放器和存储器交换:存放器和存储器交换xchg ax,2000hxchg ax,2000h ;字交换;字交换xchg al,2000h xchg al,2000h ;字节交换;字节交换xchg eax,2000h xchg eax,2000h ;双字交换;双字交换;(ax)=5678h,(bx)=1234h;(ax)=7856h微机原理与汇编语言微机原理与汇编语言举例举例3:EAX= 12345678HXCHG AH, ALBSWAP EAX;AX= 7856

56、H;EAX= 78563412H微机原理与汇编语言微机原理与汇编语言格式:格式:XLAT MEM16功能:以功能:以MEM16对应段存放器为段基址,以对应段存放器为段基址,以BX为偏移地址查表为偏移地址查表 格式:格式:XLAT;ALDS: BX+AL功能:用功能:用AL存放器的内容查表,结果存回存放器的内容查表,结果存回AL存放器。表格的存放器。表格的 首地址事先存放在首地址事先存放在DS: BX中。中。微机原理与汇编语言微机原理与汇编语言TABLEDB“0123456789ABCDEFPUSH DS;维护;维护DS存放器内容存放器内容MOV BX, SEG TABLE;取;取TABLE所在

57、的段基址送所在的段基址送BXMOV DS, BX;从;从BX转送入转送入DSLEABX, TABLE;取;取TABLE的偏移地址的偏移地址XLAT;查表,;查表,(AL) = 0100 1011B(B)POPDS ;恢复;恢复DS存放器内容存放器内容设设AL= 0000 1011B下面程序执行后,下面程序执行后,AL中的二进制数中的二进制数改动为对应的十六进制数字符的改动为对应的十六进制数字符的ASCII代码代码0100 0010B。微机原理与汇编语言微机原理与汇编语言 例:例: 假设假设(BX)=0040H,(AL)=0FH, (DS)=F000H (F004F)=2CH 那么执行那么执行

58、XLAT 指令指令后后 (AL)=2CH; 把把AL中中 的代码的代码0FH转换为转换为2CH。 (BX)=0040H(AL)=0FH2CH存储器存储器(DS)=F000H数据段数据段表格表格微机原理与汇编语言微机原理与汇编语言例:例:data segment table1 db 30h,31h,32hdata endsdseg segment table2 db 34h,35h,36hdseg endscode segment assume cs:code,ds:data,es:dsegstart: mov ax, data mov ds, ax mov ax, dseg mov es, a

59、x mov bx, 0 mov al, 1 xlat mov al, 1 xlat table2 mov ah, 4ch int 21hcode ends end start(AL)=31H(AL)=35H微机原理与汇编语言微机原理与汇编语言 如何把如何把AL存放器中的十进制数字转换为存放器中的十进制数字转换为ASCII码值?码值?data segment table db 0123456789data endscode segment assume cs:code,ds:datastart: mov ax,data mov ds,ax mov bx,offset table mov al,5

60、 xlat mov ah,4ch int 21hcode ends end start微机原理与汇编语言微机原理与汇编语言堆栈堆栈STACK是用户运用的存储器的一部分,用来存放暂时是用户运用的存储器的一部分,用来存放暂时性的数据和其他信息,例如函数运用的部分变量、调用子程序性的数据和其他信息,例如函数运用的部分变量、调用子程序的入口参数、前往地址等。的入口参数、前往地址等。 堆栈的段基址必需放在堆栈的段基址必需放在SS中。中。堆栈段的堆栈段的“栈顶地址偏移地址栈顶地址偏移地址放在放在SP存放器中。存放器中。微机原理与汇编语言微机原理与汇编语言 在在SEGMENT伪指令中添加伪指令中添加“STA

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论