微机原理与接口:第三章 数据处理_第1页
微机原理与接口:第三章 数据处理_第2页
微机原理与接口:第三章 数据处理_第3页
微机原理与接口:第三章 数据处理_第4页
微机原理与接口:第三章 数据处理_第5页
已阅读5页,还剩135页未读, 继续免费阅读

下载本文档

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

文档简介

1、微机原理与接口技术第3章 数据处理主要内容3.1 数据表示 3.2 常量表达3.3 变量应用3.4 数据传送类指令3.5 算术运算类指令3.6 位操作类指令3.7 串操作类指令3.8 IA-32指令系统微机原理与接口技术33.1 数据表示数据(Data):计算机处理的对象对应指令操作的对象:操作数(Oprand)计算机中的数据要用二进制的0和1组合表示IA-32整数指令支持的基本数据类型8、16、32、64位无符号整数8、16、32、64位有符号整数ASCII字符、字符串和BCD码3.1 数据表示微机原理与接口技术41103110211011100110-1110-2权N进制数am-1am-2

2、a1a0 .b-1b-2b-(n-1)b-n3.1.1 进制例:十进制数1111.11am-1Nm-1am-2Nm-2+a0+b-1N-1b-2N-2 +b-(n-1)N-(n-1)b-nN-n基数3.1 数据表示微机原理与接口技术51. 二进制逢二进一,由0和1两个数码组成,基数为2,各个位的权以2n表示二进制数的算术运算:逢2进1、借1当2anan-1a1a0 .b1b2bman2nan-12n-1+a020+b12-1b22-2 +bm2-m3.1 数据表示微机原理与接口技术6二进制数的算术运算3.1 数据表示微机原理与接口技术72. 逻辑运算基本逻辑运算逻辑与AND: 1101 001

3、1 = 0001逻辑或OR: 1101 0011 = 1111逻辑非NOT: 1101 = 0010逻辑异或XOR:1101 0011 = 1110 3.1 数据表示微机原理与接口技术83. 十六进制逢十六进一,由0F16个数码组成,基数为16,各个位的权以16k表示十六进制数的算术运算:逢16进1、借1当16anan-1a1a0 .b1b2bman16nan-116n-1+a0160+b116-1 b216-2 +bm16-m3.1 数据表示微机原理与接口技术9十六进制数的加法运算 2 3 D 9+ 9 4 B E 9+14=23=16(carry)+713+11+1(carry)=25=1

4、6(carry)+93+4+1(carry)=82+9=11=BB 8 9 73.1 数据表示微机原理与接口技术10十六进制数的减法运算 A 5 9 F- 6 2 B 815-8=716(borrow)+9-11=14=E5-2-1(borrow)=210-6=44 2 E 73.1 数据表示微机原理与接口技术114. 数制之间的转换3.1 数据表示微机原理与接口技术121)N进制转换成十进制数-按权展开式 = 123 +121+120+121+123= 11.625 = 10161+7160+11161=1011.101B例:A7.BH167.68753.1 数据表示微机原理与接口技术13整

5、数部分:除N取余,直至商为0小数部分:乘N取整,直至小数部分为0最先取到的数码离小数点最近!2)十进制转换成N进制数3.1 数据表示微机原理与接口技术14例:126.8125 ( )B整数部分126除2取余011111212663231215272231取余小数部分0.8125乘2取整1取整0.81252=1.6250.6252=1.250.252=0.50.52=1.01012013.1 数据表示11011111110.微机原理与接口技术15练 习 256(?)B 13/16(?)B 108.375(?)H 1000000000.11016C.63.1 数据表示微机原理与接口技术163)二进

6、制与十六进制的转换二进制十六进制- “四位并一位”以小数点为基准,两侧每4位二进制数 对应1位十六进制数,不足4位时外侧补0例:11011.101001B = (0001 1011.1010 0100)B= (1B.A4)H3.1 数据表示微机原理与接口技术17例:3A.EH=(0011 1010.1110)B十六进制 二进制-“一位拆成四位”=(111010.111)B3.1 数据表示微机原理与接口技术18作 业 27/32(?)H=(?)B 65535(?)H=(?)B 11011.1B+26.8H(?)D (101)X=(41)H, X=?3.1 数据表示微机原理与接口技术193.1.2

7、 数值的编码3.1 数据表示1. 定点整数 小数点的位置默认并固定的机器数称为定点数定点整数:小数点的位置固定在机器数最右侧定点小数:小数点的位置固定在机器数最左侧微机原理与接口技术20 无符号定点整数只表示正整数和0,不 含负数N位无符号整数表达范围:02N-1有符号定点整数表示正整数、0和负整数最高位表示数的正负即符号位,与数值无关符号位用0表示正数、1表示负数例:16位无符号定点整数的表示范围:02161 32位有符号定点整数的表示范围:21613.1 数据表示微机原理与接口技术21有符号整数在计算机中默认采用补码表示最高位表示符号,0表示正数,1表示负数正数补码直接表示数值大小,同无符

8、号数负数补码是将对应正数补码取反加1数值0只有“0”,“0”由128替代2. 补码3.1 数据表示例:+105=( )补码01101001 -105=( )补码10010111 微机原理与接口技术22 求补运算负数真值“取反加1”得机器数补码负数补码“取反加1”得到负数真值 例:补码 11100000B 真值= (11100000求反1) =00100000B =32负数求补运算,等效于“用带借位的0作减法” 例:真值-8, 补码=100H-8H=F8H 补码F8H, 真值=-(100H-F8H)=-8H=-83.1 数据表示23引入补码可以将减法变成加法补码相加之和仍为补码利用无符号数加法结

9、合补码表达,实现无符号数加法无符号数减法有符号数加法有符号数减法 3. 补码运算3.1 数据表示X补码Y补码XY补码X补码Y补码X补码Y补码XY补码微机原理与接口技术24例1:67H-10H=57H例2:-67H-10H=-77H=189H=(-77H)补进位自然丢失 67H+(-10H)补=67H+F0H=157H进位自然丢失 (-67H)补+(-10H)补=99H+F0H3.1 数据表示微机原理与接口技术254. 原码和反码3.1 数据表示正数的原码、反码和无符号数一样求负数的原码、反码和补码首先计算其对应正数的编码然后取反符号位(设置为1)成为原码再取反其他位得到反码最后加1就是补码例:

10、+32=(00100000B)原码=(00100000)反码=(00100000)补码 -32=(10100000B)原码=(11011111B)反码=(11100000)补码微机原理与接口技术26作 业一个8位的二进制数若采用补码表示,由3个“1”和5个“0”组成,则最小值为十进制数(?) X原Y反Z补90H X=?Y=?Z=? X补1100111B, X原? -X补?2X补=?3.1 数据表示微机原理与接口技术273.1.3 字符的编码在计算机中,各种字符需要用若干位的二进制码的组合表示,即字符的二进制编码由于字节为计算机的基本存储单位,所以常以8个二进制位为单位表达字符012345678

11、9English汉字3.1 数据表示微机原理与接口技术281. BCD二进制编码的十进制数用4位二进制编码00001001表示09压缩BCD码:一个字节表达两位BCD码非压缩BCD码:一个字节表达一位BCD码(低4位表达数值,高4位常设置为0)BCD码便于输入输出,表达数值准确3.1 数据表示例:(100010010001.01000101)BCD = 34=( )BCD =( ) BCD 34H=( )BCD =( ) BCD A7H=( )BCD =( ) BCD0101001052H000101100111167H 0011010034H891.45微机原理与接口技术292. ASCII

12、(美国标准信息交换码)标准ASCII码用7位二进制编码,有128个不可显示的控制字符:前32个和最后一个回车CR:0DH 换行LF:0AH 响铃BEL:07H可显示和打印的字符:20H后的94个编码数码09:30H39H大写字母AZ:41H5AH小写字母az:61H7AH空格:20H扩展ASCII码:最高D7位为1,表达制表符号3.1 数据表示微机原理与接口技术303. Unicode(统一码)8位ASCII码表达英文字符16位国标码表达汉字字符汉字机内码:国标码在计算机中使用的编码国际信息交换码Unicode16位编码对世界上所有语言的大多数字符进行编码提供扩展能力Unicode兼容ASCI

13、IUnicode给每个字符提供了一个唯一的数字,不论是什么平台,不论是什么程序,不论是什么语言3.1 数据表示微机原理与接口技术31作 业3.1 简答题(1)3.2 判断题(13)3.3 填空题(2、3)3.43.8 3.14主要内容3.1 数据表示 3.2 常量表达3.3 变量应用3.4 数据传送类指令3.5 算术运算类指令3.6 位操作类指令3.7 串操作类指令3.8 IA-32指令系统微机原理与接口技术33常数十、十六和二进制形式表达的数值以后缀字母区分,十进制数可以不加以字母AF开头的十六进制常数,要加前导0字符和字符串英文缩略号括起来的单个字符或多个字符数值是每个字符对应的ASCII

14、码值符号常量使用标识符表达一个数值符号定义伪指令:等价EQU,等号数值表达式用运算符连接各种常量构成的算式算术运算符:(加) (减) *(乘) /(除)常量具有确定数值3.2 常量表达微机原理与接口技术34例3.1 数据表达程序1 .data0000000064 64 64 64 64 const1byte 100,100d,01100100b,64h, d0000000501 7F 80 80 FF FF const2byte 1,+127,128,-128,255,-10000000B69 97 20 E0 32 CE const3byte 105,-105,32,-32,32h,-32h

15、0000001130 31 32 33 34 35 36 37 38 39 61 6263 78 79 7A 41 42 43 58 59 5A const4byte 0123456789,abcxyz,ABCXYZ3.2 常量表达微机原理与接口技术35例3.1 数据表达程序2000000270D 0A 0 crlf byte 0dh,0ah,0= 0000000Aminint = 10 = 000000FFmaxintequ 0ffh0000002A0A 0F FA F5 const5byte minint,minint+5 byte maxint-5,maxint-minint000000

16、2E10 56 15 EB const6byte 4*4,34h+34,67h-52h,52h-67h3.2 常量表达主要内容3.1 数据表示 3.2 常量表达3.3 变量应用3.4 数据传送类指令3.5 算术运算类指令3.6 位操作类指令3.7 串操作类指令3.8 IA-32指令系统微机原理与接口技术37变量(Variable)程序运行中随之发生变化的结果保存在可读可写的主存空间实质是主存单元的数据,因而可以改变变量需要事先定义才能使用变量具有属性方便应用 变量表达主存数据,即存储器操作数3.3 变量应用微机原理与接口技术383.3.1 变量定义申请存储空间,还可以进行存储单元初始化变量名

17、变量定义伪指令 初值表变量名是用户标识符,表示首元素逻辑地址变量定义伪指令BYTE、WORD、DWORD、FWORD、QWORD、TBYTE初值表是用逗号分隔的参数各种形式的常量“?”表示初值不确定,即未赋初值复制操作符DUP3.3 变量应用1. 变量定义伪指令微机原理与接口技术393.3 变量应用2. 字节量数据BYTE定义8位、字节量变量数据可以表达无符号整数0255补码表示的有符号整数:-128+127一个字符(ASCII码值)压缩BCD码:099非压缩BCD码:09字符串定义使用字节变量定义BYTE3.3 变量应用微机原理与接口技术40例3-2 字节变量程序3.3 变量应用41=000

18、0000Aminint= 100000000000 80 FF 80 00 7F bvar1byte 0,128,255,-128,0,+1270000000601 FF 26 DA 38 C8 bvar2byte 1,-1,38,-38,38h,-38h0000000C00 bvar3byte ?0000000D00000005 24 bvar4byte 5 dup ($)000000120000000A 00 0000000A 0A 00 bvar5byte minint dup(0),minint dup(minint,?)0000003000000002 02 03 00000002

19、04byte 2 dup(2,3,2 dup(4)3. 字量数据WORD定义16位、字量变量数据可以表达16位无符号和有符号整数16位段选择器,16位偏移地址16位数据包含高低两个字节,占用2个连续的字节存储单元小端方式(Little Endian)低字节数据存放在低地址存储单元高字节数据存放在高地址存储单元3.3 变量应用微机原理与接口技术42例3-3字变量程序= 0000000Aminint= 10000000000000 8000 FFFF 8000 0000 7FFF wvar1word 0,32768,65535,-32768,0,+327670000000C0001 FFFF 00

20、26 FFDA 0038 FFC8 wvar2word 1,-1,38,-38,38h,-38h000000180000 wvar3word ?0000001A2010 10200000001E00000005 000A 0000 wvar4word 2010h,1020hword 5 dup(minint,?)000000323139 3832 wvar6word 3139h,3832h0000003639 31 32 380000003A00 bvar6byte 39h,31h,32h,38hbyte 043微机原理与接口技术4. 双字量数据DWORD定义32位、双字量变量数据可以表达32

21、位无符号和有符号整数32位偏移地址、线性地址或段基地址32位数据包含4个字节,以“高对高、低对低”原则占用4个连续字节空间3.3 变量应用微机原理与接口技术44小端存储方式3.3 变量应用微机原理与接口技术45例3-4 双字变量程序1=0000000Aminint= 100000000000000000 80000000 FFFFFFFF80000000 00000000 7FFFFFFF dvar1dword 0,80000000h,0ffffffffh,-80000000h,0,7fffffffh0000001800000001 FFFFFFFF 00000026FFFFFFDA 0000

22、0038 FFFFFFC8 dvar2dword 1,-1,38,-38,38h,-38h0000003000000000 dvar3dword ?0000003400002010 00001020dword 2010h,1020h3.3 变量应用微机原理与接口技术46例3-4 双字变量程序20000003C0000000A 0000000A 00000000 dvar5dword minint dup(minint,?)0000008C38323139 dvar6dword 38323139h0000009039 31 32 38 bvar6byte 39h,31h,32h,38h00000

23、09400byte 091289128运行结果3.3 变量应用微机原理与接口技术475. 变量定位变量定义的存储空间按照书写的先后顺序一个接着一个分配“ORG 参数”控制存放的偏移地址 org 100h;从偏移地址100H处安排指令代码也由汇编程序按照语句的书写顺序安排存储空间定位伪指令也可以用于控制代码的偏移地址3.3 变量应用微机原理与接口技术483.3.2 变量属性变量定义分配存储空间赋初值创建变量名变量名具有两类属性地址属性:首个变量所在存储单元的逻辑地址,含有段基地址和偏移地址类型属性:变量定义的数据单位字节量BYTE 字量WORD 双字量DWORD 3字量FWORD 4字量QWOR

24、D 10字节量TBYTE3.3 变量应用微机原理与接口技术49 地址操作符地址操作符用于获取变量名的地址属性 括起的表达式作为存储器地址指针$返回当前偏移地址OFFSET 变量名返回变量名所在段的偏移地址SEG 变量名返回段基地址(实地址存储模型)3.3 变量应用微机原理与接口技术50例3-5 变量地址属性程序13.3 变量应用51; 数据段0000000012 34 bvarbyte 12h,34h org $+10 0000000C0001 0002 0003 0004 0005 00060007 0008 0009 000A arrayword 1,2,3,4,5,6,7,8,9,100

25、00000205678 wvarword 5678h=00000016arr_size = $-array=0000000Barr_len = arr_size/2000000229ABCDEF0 dvardword 9abcdef0h例3-5 变量地址属性程序2; 代码段00000000A0 00000000 Rmov al,bvar000000058A 25 00000001 Rmov ah,bvar+10000000B66| 8B 1D00000022 Rmov bx,wvar200000012B9 0000000Bmov ecx,arr_len00000017BA 00000017 R

26、mov edx,$3.3 变量应用微机原理与接口技术52直接寻址al=12hah=34hbx=def0hecx=0000000bhedx=00000017h例3-5 变量地址属性程序30000001CBE 00000022 Rmov esi,offset dvar00000021 8B 3E mov edi,esi00000023 8B 2D 00000022 Rmov ebp,dvar00000029 E8 00000000 E call disprdEAX=00003412, EBX=7FFDDEF0, ECX=0000000B, EDX=00401017ESI=00404022, EDI

27、=9ABCDEF0, EBP=9ABCDEF0, ESP=0012FFC43.3 变量应用微机原理与接口技术53esi=00000022hedi=9abcdef0hebp=9abcdef0h 类型操作符类型操作符使用变量名的类型属性类型名 PTR 变量名将变量名按照指定的类型使用TYPE 变量名返回占用字节空间的字量数值LENGTHOF 变量名返回整个变量的数据项数SIZEOF 变量名返回整个变量占用的字节数3.3 变量应用微机原理与接口技术54例3-6 变量类型属性程序1; 代码段00000000A1 0000000C Rmov eax,dword ptr array; 获得数据000000

28、05BB 00000001mov ebx,type bvar; 获得字节类型值0000000AB9 00000002mov ecx,type wvar; 获得字类型值0000000FBA 00000004mov edx,type dvar; 获得双字类型值3.3 变量应用微机原理与接口技术55例3-6 变量类型属性程序200000014BE 0000000Amov esi, lengthof array ; 获得数据个数00000019BF 00000014mov edi, sizeof array; 获得字节长度0000001EBD 00000016mov ebp, arr_size; 获得

29、字节长度00000023E8 00000000 Ecall disprd EAX=00020001, EBX=00000001, ECX=00000002, EDX=00000004ESI=0000000A, EDI=00000014, EBP=00000016, ESP=0012FFC43.3 变量应用微机原理与接口技术56微机原理与接口技术57作 业3.1 简答题(24)3.3 填空题(46)3.103.13微机原理与接口技术58 .data org 1000hbuf1 dword 7080h,9000h,0ab0hbuf2 word buf1count equ $-buf1buf3 by

30、te 2 dup(?,10h,10,A)buf4 word buf3-buf2 .codemov eax, offset buf4mov ebx, buf1+2mov esi, lengthof buf2mov edi, sizeof buf3测 验要求画出内存分配情况,并说明每条硬指令的执行结果主要内容3.1 数据表示 3.2 常量表达3.3 变量应用3.4 数据传送类指令3.5 算术运算类指令3.6 位操作类指令3.7 串操作类指令3.8 IA-32指令系统微机原理与接口技术 60学习指令的注意事项指令的功能:该指令能够实现何种操作指令的寻址方式:该指令中的操作数采用何种寻址方式指令对标志

31、的影响:指令执行后是否影响标志位、如何影响其他方面:如指令执行时的约定设置、必须预置的参数、隐含使用的寄存器等数据传送把数据从一个位置传送到另一个位置除标志寄存器传送指令外,均不影响标志位包括3类数据传送指令:3.4 数据传送类指令微机原理与接口技术61通用数据传送指令堆栈操作 指令其它传送指令地址传送指令标志传送指令换码指令3.4.1 通用传送指令3.4 数据传送类指令微机原理与接口技术62MOVXCHG微机原理与接口技术 631. 传送指令 MOV dest: reg/mem src: imm/reg/mem/seg 3.4 数据传送类指令 将源操作数内容传送到目的操作 指令格式:mov

32、dest , src微机原理与接口技术 64两个操作数的类型必须一致操作数必须有明确的类型两个操作数不能同时为存储器操作专用寄存器的指令有限注意事项3.4 数据传送类指令双操作数必须类型一致mov al, 050ah ; 类型不一致,050AH超过了寄存器AL范围mov eax,050ah ; 双字量数据传送mov esi, dl ; 类型不一致, ESI为32位寄存器,DL为8位寄存器mov esi,edx ; 两个32位寄存器传送3.4 数据传送类指令微机原理与接口技术操作数必须有明确的类型 mov EBX,255; 无明确类型 mov byte ptr ebx,255; BYTE PTR

33、说明是字节操作 mov word ptr ebx,255; WORD PTR说明是字操作 mov dword ptr ebx,255; DWORD PTR说明是双字操作3.4 数据传送类指令微机原理与接口技术双操作数不允许都是存储单元 ; 假设dbuf1和dbuf2是两个双字变量 mov dbuf2, dbuf1; 两个操作数都是存储单元 mov eax, dbuf1 ; eax=dbuf1(将DBUF1内容送EAX) mov dbuf2, eax ; dubf2=eax(将EAX内容送DBUF2)3.4 数据传送类指令微机原理与接口技术2. 交换指令 XCHG 将源操作数和目的操作数内容交换

34、xchg eax, ebxxchg edx, varxchg al, edi3.4 数据传送类指令微机原理与接口技术68 dest: reg src: reg/mem 指令格式:xchg dest, src例3-7 数据交换程序1; 数据段 numbyte 6,7,7,8,3,0,0,0 tabbyte 67783000; 代码段 mov ecx, lengthof num; ECX变量NUM长度(数据个数) mov esi, offset num mov edi, offset tabagain: mov al, esi ; AL获得变量NUM的一个数据 xchg al, edi ;交换,A

35、L等于变量TAB对应字符3.4 数据传送类指令微机原理与接口技术69mov esi, al ; 保存回变量NUM原位置 call dispc ; 显示AL中的字符 add esi,1 ; 指向下一个数字 add edi,1 ; 指向下一个字符 loop again ; 循环处理 xchg eax, eax nop67783000运行结果3.4 数据传送类指令微机原理与接口技术70例3-7 数据交换程序2微机原理与接口技术71空操作指令NOP等同于指令 XCHG EAX,EAX处理器执行该指令,需要花费时间,在主存中也要占用一个字节空间实现短时间延时临时占用代码空间3.4 数据传送类指令mov

36、ecx, lengthof num ; ECX变量NUM长度mov esi,0 ; ESI0,表示数据在变量中的位移量 again:mov al,numesi ; AL获得变量NUM的一个数字 xchg al,tabesi ; 交换,AL等于变量TAB对应字符mov numesi,al; 保存回变量NUM位置call dispc; 显示AL中的字符add esi,1; 指向下一个数据loop again; 循环3.4 数据传送类指令72例3-7 数据交换程序3微机原理与接口技术3.4.2 堆栈操作指令“先进后出FILO”存取的存储区域,只有一个数据出入口,即当前栈顶(不断变化)两种基本操作数据

37、压进堆栈PUSH数据弹出堆栈操作POPSS指向堆栈段的起始位置ESP指定栈顶数据进入堆栈,ESP逐渐减小数据依次弹出、ESP逐渐增大Word 1Word 2Word 3Word 4Word 5StackPUSHPOP3.4 数据传送类指令微机原理与接口技术731. 进栈指令PUSH将ESP减小作为当前栈顶 esp-2(4)esp将源操作数(立即数、通用寄存器和段寄存器内容或存储器操作数)传送到当前栈顶 srcss:esp3.4 数据传送类指令74指令格式:push src操 作:以字或双字为单位操作进栈双字量数据时,ESP减4进栈字量数据时,ESP减2微机原理与接口技术 75执行前123456

38、78HEAX7812H堆栈段SS高地址低地址 执行进栈指令 push eax3.4 数据传送类指令ESP栈顶ESPESP-4563412EAXESP2. 出栈指令 POP 将栈顶数据传送到目的操作数(通用寄存器、存储单 元或段寄存器)SS:ESP dest增加ESP作为当前栈顶 ESPESP4(2) 3.4 数据传送类指令微机原理与接口技术76 指令格式:pop dest 操 作:以字或双字为单位操作出栈双字量数据时,ESP加4出栈字量数据时,ESP加2微机原理与接口技术 77执行前EAX0012H堆栈段SS高地址低地址 执行出栈指令 pop eax3.4 数据传送类指令ESP栈顶ESPEAX

39、207667 ESP=ESP+4 例3-8 堆栈操作程序 ; 数据段 ten = 10 dvar dword 67762000h,12345678h ; 代码段mov eax,dvar+4 ; EAX12345678Hpush eax ; 将EAX内容压入堆栈push dword ptr ten ; 将立即数以双字量压入堆栈push dvar ; 变量DVAR第一个数据入栈pop eax ; 栈顶数据弹出到EAXpop dvar+4 ; 栈顶数据弹出到DVAR4mov ebx,dvar+4 ; EBX000000AHpop ecx ; 栈顶数据弹出到ECXcall disprd3.4 数据传送

40、类指令微机原理与接口技术78微机原理与接口技术793. 堆栈的应用 堆栈不可或缺,被很多指令使用:堆栈操作指令子程序调用CALL和返回RET,中断调用INT和返回IRET等内部异常、外部中断等也利用堆栈堆栈可用来临时存放数据,以便随时恢复它们常利用堆栈基址指针EBP,随机读写堆栈数据mov ebp, esp ; EBPESPmov eax, ebp+8; EAXSS:EBP+8mov ebp, eax; SS:EBPEAX3.4 数据传送类指令微机原理与接口技术80利用堆栈实现主、子程序间传递参数堆栈还常用于子程序的寄存器保护和恢复注意入栈和出栈的数据要成对,要保持堆栈平衡PUSH AX PU

41、SH BXPUSH CXPUSH DXPOP DXPOP CXPOP BXPOP AX入栈顺序:出栈顺序:3.4 数据传送类指令3.4.3 其他传送指令 针对特定需要设计的专用传送指令换码指令 XLAT标志传送指令 CLC STC CMC 地址传送指令 LEA LDS LES 3.4 数据传送类指令微机原理与接口技术811. 换码指令 XLAT指令功能:ALEBXAL 换码指令执行前:在主存建立一个字节量表格,内含目的代码表格首地址存放于EBXAL存放相对表格首地址的位移量换码指令执行后:将AL寄存器的内容转换为目标代码3.4 数据传送类指令微机原理与接口技术82例3-9 换码显示程序1;数据

42、段 numbyte 6,7,7,8,3,0,0,0; 被转换数字 tabbyte 0123456789; 代码表;代码段mov ecx,lengthof nummov esi,offset nummov ebx,offset tab; EBX指向代码表 again:mov al, esi; AL要转换的数字xlat; 换码call dispc; 显示add esi,1; 指向下一个数字loop again; 循环3.4 数据传送类指令微机原理与接口技术8367783000运行结果2. 标志传送指令直接操作标志寄存器标志位操作指令:直接改变CF、DF、IF标志3.4 数据传送类指令微机原理与接口

43、技术843. 地址传送指令 LEA地址传送指令获取存储器操作数的地址lea r16/r32, mem;r16/r32mem的有效地址EA(不需类型一致)LEA指令类似地址操作符OFFSET的作用LEA指令在指令执行时计算出偏移地址OFFSET操作符在汇编阶段取得变量的偏移地址OFFSET无需在执行时计算、指令执行速度更快LEA指令能获取汇编阶段无法确定的偏移地址3.4 数据传送类指令微机原理与接口技术85 例3-10 地址传送程序; 数据段 dvar dword 41424344h; 代码段mov eax,dvar; EAX41424344Hlea esi,dvar; ESI指向DVARmov

44、 ebx,esi; EBX41424344Hmov edi,offset dvar; EDI指向DVARmov ecx,edi ; ECX41424344Hlea edx,esi+edi*4+100h ; EDXESIEDI4100Hcall disprd3.4 数据传送类指令微机原理与接口技术86微机原理与接口技术87作 业3.1 简答题(5,6)3.2 判断题(4,5)3.15 3.17 3.18主要内容3.1 数据表示 3.2 常量表达3.3 变量应用3.4 数据传送类指令3.5 算术运算类指令3.6 位操作类指令3.7 串操作类指令3.8 IA-32指令系统微机原理与接口技术89算术运

45、算对数据进行加减乘除基本的数据处理方法加减运算有“和”或“差”的结果外,还有进借位、溢出等状态标志,也是结果的一部分注意算术运算类指令对标志的影响掌握:加法和减法指令熟悉:乘法和除法指令理解:零位扩展和符号扩展3.5 算术运算类指令微机原理与接口技术903.5.1 加法指令ADDADCINC3.5 算术运算类指令微机原理与接口技术911. 加法指令 ADD dest: reg/mem src: imm/reg/mem 操 作:dest+srcdest 指令格式:add dest src指令按照定义影响6个状态标志位!3.5 算术运算类指令; AX= , OF= , SF= , ZF= , PF

46、= ,CF= 例:mov eax, 0aaff7348h add al, 27h add ax, 3fffh add eax, 88000000h微机原理与接口技术 92; AL= , OF= ,SF= ,ZF= ,PF= ,CF= 6FH00 0103.5 算术运算类指令B36EH 0 0110; EAX= , OF= , SF= , ZF= , PF= ,CF= 32FFB36EH 0 1100微机原理与接口技术932. 带进位加法指令 ADC 操 作:dest+src+CFdest 指令格式:adc dest src3.5 算术运算类指令 用于与ADD指令相结合实现多精度数的加法先将两个

47、操作数的低32位相加(用ADD指令)再加高位部分、并将进位加到高位(用ADC指令)微机原理与接口技术94mov eax, dword ptr qvar1 ;取低32位add eax, dword ptr qvar2 ;加低32位,设置CFmov edx, dword ptr qvar1+4 ;取高32位adc edx, dword ptr qvar2+4 ;加高32位,同时加CF例3-11 64位数据相加程序 ; 数据段 qvar1 qword 6778300082347856h qvar2 qword 6776200012348998h ; 代码段3.5 算术运算类指令微机原理与接口技术95

48、3. 增量指令INC 操 作:reg/mem+1reg/mem 指令格式:inc reg/mem 用于对计数器和地址指针进行调整 不影响CF但影响其它状态标志位inc ecxinc esiinc wvarinc dvarebx+edi3.5 算术运算类指令微机原理与接口技术963.5.2 减法指令SUBSBBDEC3.5 算术运算类指令CMPNEG微机原理与接口技术971. 减法指令 SUB dest: reg/mem src: imm/reg/mem 操 作:dest-srcdest 指令格式:sub dest src指令按照定义影响6个状态标志位!3.5 算术运算类指令; AX= , OF

49、= , SF= , ZF= , PF= ,CF= 例:mov eax, 0aaff7348h sub al, 27h sub ax, 3fffh sub eax, 0bb000000h微机原理与接口技术 98; AL= , OF= ,SF= ,ZF= ,PF= ,CF= 21H00 0103.5 算术运算类指令3322H 0 0001; EAX= , OF= , SF= , ZF= , PF= ,CF= EFFF3322H 0 1011微机原理与接口技术992. 带借位减法指令 SBB 操 作:dest-src-CFdest 指令格式:sbb dest src3.5 算术运算类指令 用于与SU

50、B指令相结合实现多精度数的减法先将两个操作数的低32位相减(用SUB指令)再减高位部分、并从高位减去借位(用SBB指令)微机原理与接口技术1003. 减量指令 DEC 操 作:reg/mem-1reg/mem 指令格式:dec reg/mem 用于对计数器和地址指针进行调整 不影响CF但影响其它状态标志位dec ecxdec esidec wvardec dvarebx+edi3.5 算术运算类指令微机原理与接口技术101例3-12 大小写字母转换程序 ; 数据段 msg byte welcome,0 ; 代码段mov ecx,(lengthof msg)-1 ; ECX等于字符串长度mov

51、ebx,0 ; EBX0指向头一个字母sub msgebx,a-A ;小写字母减20H转换为大写inc ebx ; 指向下一个字母loop again ; 循环mov eax,offset msgcall dispmsg ; 显示3.5 算术运算类指令again:微机原理与接口技术1023.5 算术运算类指令4. 求补指令 NEG 操 作:0-destdest 指令格式:neg dest 影响CF、OF、PF、SF、ZFdest: reg/mem微机原理与接口技术 103例:mov ax,0ff64h neg al sub al,9dh neg ax dec al neg ax ; AX=FF

52、9CH,OF=0,SF=1,ZF=0,PF=1,CF=1; AX=FFFFH,OF=0,SF=1,ZF=0,PF=1,CF=1; AX=0001H,OF=0,SF=0,ZF=0,PF=0,CF=1; AX=0000H,OF=0,SF=0,ZF=1,PF=1,CF=1; AX=0000H,OF=0,SF=0,ZF=1,PF=1,CF=03.5 算术运算类指令微机原理与接口技术1043.5 算术运算类指令5. 比较指令 CMP 操 作:dest-src 指令格式:cmp dest, src 结果不回送目的操作数按照减法结果影响状态标志 根据标志状态获知两个操作数的大小关系 给条件转移等指令使用其形

53、成的状态标志微机原理与接口技术 105 根据标志位判断比较结果的步骤destsrcdest=srcdestsrcdestsrc ZF=1?YN有符号数的比较无符号数的比较N CF=1?YN SF=OF?Y3.5 算术运算类指令算术运算指令还包括:3.4 数据传送类指令微机原理与接口技术106乘法指令除法指令零位扩展和符号位扩展指令3.5.3 乘除法等指令十进制调整指令(自学)微机原理与接口技术1071. 乘法指令3.5 算术运算类指令微机原理与接口技术1083.5 算术运算类指令乘法指令对 CF/OF 的影响:00 乘积的高一半为零11 否则MUL指令: CF,OF=00 乘积的高一半是低一

54、半的符号扩展11 否则 IMUL指令: CF,OF=例:AX = 16A5H,BX = 0611H (1) IMUL BL ; AX AL * BL ; AX = 0F9F5H CF=OF=1 (2) MUL BX ; DX. AX AX *BX ; (DX)=0089H (AX)=5EF5H CF=OF=1微机原理与接口技术1093.5 算术运算类指令无符号除法指令DIV和有符号除法指令IDIV除法指令可能产生除法溢出对DIV指令,除数为0,或者在字节做除数时商超过8位,字做除数时商超过16位,或者双字做除数时商超过32位,则发生除法溢出对IDIV指令,除数为0,或者在字节除时商不在-128

55、127范围内,在字除时商不在-3276832767范围内,或者在双字除时商不在-2312311范围内,则发生除法溢出除法错溢出时将产生编号为0的内部中断2. 除法指令微机原理与接口技术1103.5 算术运算类指令 除法指令使状态标志没有定义微机原理与接口技术1113.5 算术运算类指令3. 零位扩展和符号扩展指令零位扩展对应无符号数:MOVZX前面加0实现位数扩展例:80H:8位无符号数,零位扩展为16位:0080H符号扩展对应有符号数:MOVSX指令前面加符号位(最高位)实现位数扩展例:64H:8位有符号数,符号扩展成16位:0064H FF00H:16位有符号数据,符号扩展成32位: FF

56、FFFF00H,都表达真值:-256 真值-1:字节量补码:FFH,字量补码:FFFFH, 双字量补码:FFFFFFFFH微机原理与接口技术1123.5 算术运算类指令 指令格式微机原理与接口技术113作 业3.1 简答题(7,8)3.2 判断题(6,7)3.19 3.20 3.21主要内容3.1 数据表示 3.2 常量表达3.3 变量应用3.4 数据传送类指令3.5 算术运算类指令3.6 位操作类指令3.7 串操作类指令3.8 IA-32指令系统微机原理与接口技术 115位操作指令可以对数据中的各个二进制位进行操作,包括:逻辑运算指令移位指令循环移位指令3.6 位操作指令微机原理与接口技术

57、116AND dest, src : dest srcdestOR dest, src : dest srcdestXOR dest, src : dest srcdestTEST dest, src : dest src NOT dest : destdest3.6.1 逻辑运算指令dest/src: reg/mem设置CF=OF=0根据结果设置SF/ZF/PFAF无定义不影响标志位3.6 位操作指令微机原理与接口技术117例3-13 逻辑运算程序1mov eax,varA; EAX11001010000111100101010101001101Bnot eax; EAX0011010111

58、1000011010101010110010Bmov ebx,varB ; EBX00110111010110100011010111100001Band eax,varB; EAX00110101010000000010000010100000Bnot ebx; EBX11001000101001011100101000011110Band ebx,varA; EBX11001000000001000100000000001100Bor eax,ebx; EAX11111101010001000110000010101100Bmov varT1, eax3.6 位操作指令微机原理与接口技术1

59、18例3-13 逻辑运算程序2mov eax,varAxor eax,varB; EAX11111101010001000110000010101100Bmov varT2,eax;mov eax,varT1 ; 二进制形式显示VART1call dispbdcall dispcrlf ; 换行显示mov eax,varT2 ; 二进制形式显示VART2call dispbd11111101010001000110000010101100111111010100010001100000101011003.6 位操作指令微机原理与接口技术 119AND指令可以复位某些位而不影响其它位(同“0”与

60、)OR指令可以置位某些位而不影响其它位(同“1”或)XOR指令可以求反某些位(同“1”异或)而不影响其它位(同“0”异或)注 意3.6 位操作指令微机原理与接口技术 120例:字母大小写的转换AND bl, 11011111b(dfh) ; 小写转换为大写:D5清0,其余位不变 OR bl, 00100000b(20h) ; 大写转换为小写:D5置1,其余位不变XOR bl, 00100000b(20h) ; 大小写相互转换:D5求反,其余位不变3.6 位操作指令微机原理与接口技术 121 SHL dest, 1/cl : 逻辑左移指令 SHR dest, 1/cl : 逻辑右移指令 SAL

温馨提示

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

评论

0/150

提交评论