




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 解决微型机领域中数的不同表示方法解决微型机领域中数的不同表示方法一常用计数制一常用计数制 1. 1. 十进制数:编程时使用(十进制数:编程时使用(D D) 2. 2. 二进制数:计算机内部信息存储,运算,二进制数:计算机内部信息存储,运算, 输入输入/ / 输出都是二进制数(输出都是二进制数(B B) 1.1 1.1 计算机中的数制计算机中的数制3.3.十六进制数十六进制数(H):人们最常用的是人们最常用的是十进制十进制,计算机中为了物理实,计算机中为了物理实现的方便,采用的是现的方便,采用的是二进制,二进制,为了书写阅读方为了书写阅读方便,又常常采用便,又常常采用十六进制数十六进制数来表示
2、二进制数。来表示二进制数。进位制 二进制 八进制 十进制 十六进制规则 逢二进一 逢八进一 逢十进一 逢十六进一基数 R=2 R=8 R=10 R=16数码 0,1 0,1,2.,7 0,1,2.,9 0,1,2,.9, A,B,C,D,E,F 权 2i 8i 10i 16i 形式表示 B Q D H计算机中常用的各种进位计数制计算机中常用的各种进位计数制在数位上在数位上, ,每个数位被赋予一定的位值。例如每个数位被赋予一定的位值。例如: : 在十进制数中在十进制数中, ,个、十、百、千个、十、百、千各位的权分各位的权分别为别为10100 0 , 10, 101 1 , 10, 102 2 ,
3、 10, 103 3 位二进制位二进制数数 等值的一位等值的一位 十六进制数十六进制数 位二进制数位二进制数 等值的一位等值的一位 十六进制数十六进制数000000000 0100010008 8000100011 1100110019 9001000102 210101010A A001100113 310111011B B010001004 411001100C C010101015 511011101D D011001106 611101110E E011101117 711111111F F十六进制数十六进制数 与二进制的关系:与二进制的关系:每每4位二进制数用位二进制数用1位十六进制
4、数来表示位十六进制数来表示二进制与十六进制运算二进制与十六进制运算1 0 11 1 101101 1 0 11 0 1 00 0 1 1( 3 9 )( 3 9 )1616( 7 A )( 7 A )1616( B 3 )( B 3 )1616( 4 5 )( 4 5 )1616( 2 6 )( 2 6 )1616( 1 F )( 1 F )1616二数制转换二数制转换 二、八、十六进制数 十进制数 算法: : 每位的代码和该位的权值相乘,再求累加和 如:()(?) 解:解: 123122 021 120121122 = 8 4 0 1 0.5 0.25 = (13.75 ) 10如:如: (
5、29A F)16 = ( ? )10解解: 21639162 10161 15160 = 8192 2304 160 15 = (10671)10. . 二进制数二进制数十六进制数十六进制数 算法:算法:四位二进制数为一组,每组用等值的十六进制代换四位二进制数为一组,每组用等值的十六进制代换 如:如:(101011.11)(101011.11)(10,1011.1100)(10,1011.1100)2=(2B.C)=(2B.C)16163 3十六进制数十六进制数二进制数二进制数算法:算法:一位十六进制数用等值的四位二进制数代换一位十六进制数用等值的四位二进制数代换如如: : (17E.58)
6、(17E.58)1616(0001,0111,1110.0101,1000)0001,0111,1110.0101,1000)2 24 . 4 . 十进制数十进制数二进制数二进制数 十进制整数十进制整数二进制数二进制数 算法:算法:除取整,直到商为零为止除取整,直到商为零为止 ,倒排,倒排 1 11.余220.余211.余20所以,所以,(11)(11)1010=(1011)=(1011)2 251.余 2 十进制数纯小数十进制数纯小数二进制数二进制数 算法算法: :乘乘2 2取整取整, ,直到乘积的小数部分为直到乘积的小数部分为0 0时止,顺排时止,顺排 (0.8125) (0.8125)1
7、010=(0.1101)=(0.1101)2 20. 8125 1 . 625 22 1. 250 2 1. 020. 5十进制带小数十进制带小数 二进制数二进制数 算法:算法:整数、纯小数分别计算整数、纯小数分别计算, ,再合并再合并 (11.8125)(11.8125)1010=(1011.1101)=(1011.1101)2 2 1.21.2计算机中数据的编码计算机中数据的编码一十进制数的二进制编码一十进制数的二进制编码BCDBCD码码二字符的编码二字符的编码ASCIIASCII码码三有符号数的编码(码制)三有符号数的编码(码制)原反补码原反补码解决不同信息在计算机中的具体表示解决不同信
8、息在计算机中的具体表示 一十进制数的二进制编码一十进制数的二进制编码BCD码码 采用采用二进制数二进制数对每一位对每一位十进制数字十进制数字进行编码所得到的数进行编码所得到的数叫做叫做BCD码。码。 BCD码有多种形式,最常用的是码有多种形式,最常用的是8421BCD码,它是用码,它是用4位二进制数位二进制数对一个十进制数进行编码,这对一个十进制数进行编码,这4位二进制码位二进制码的值就是被编码的一位十进制数的值。的值就是被编码的一位十进制数的值。4 401000100010001003 300110011001100112 200100010001000101 100010001000100
9、010 00000000000000000等值的一位十进制数等值的一位十进制数 等值的一位等值的一位BCDBCD码数码数 四位二进制数四位二进制数 01010101010101015 501100110011001106 601110111011101117 710001000100010008 810011001100110019 910101010非法非法BCDBCD码码1011101111001100110111011110111011111111 BCDBCD码在计算机中的存储分为紧凑型和非紧凑码在计算机中的存储分为紧凑型和非紧凑型两种:型两种:紧凑型紧凑型BCDBCD码:码: (37
10、37)D D = 0011 = 0011,0111B0111B非紧凑型非紧凑型BCDBCD码:码: (3737)D D = 0000 = 0000,0011B0011B 0000 0000,0111B0111B 二字符的编码二字符的编码ASCII码码 计算机常用的输入输出设备(键盘、显示器、打印机)处计算机常用的输入输出设备(键盘、显示器、打印机)处理的数都是字符。理的数都是字符。 有:有:英文的大小写字母,英文的大小写字母,数字符号数字符号(0,1,9)以及其他)以及其他常用符号常用符号(如:(如:%、+等)。等)。 采用美国标准信息交换码(采用美国标准信息交换码(ASCII)对字符进行编码
11、。)对字符进行编码。 使用使用七位二进制编码七位二进制编码来表示一个字符。该编码方案中共有来表示一个字符。该编码方案中共有128个字符(个字符(27=128)。)。ASCIIASCII字符编码高 位 低 位 000 001 010 011 100 101 110 1110000 NUL DLE SP 0 0 P p0001 SOH DC1 ! 1 1 A A Q a q0010 STX DC2 “ 2 B R b r 0011 ETX DC3 # 3 C S c s 0100 EOT DC4 $ 4 D T d t 0101 ENQ NAK % 5 E U e u 0110 ACK SYN &
12、 6 F V f v 0111 BEL ETB 7 G W g w 1000 BS CAN ( 8 H X h x 1001 HT EM ) 9 I Y i y 1010 LFLF SUB * : J Z j z 1011 VT ESC + ; K k 1100 FF FS , N n 1111 SI US / ? O _ o DEL如:键入如:键入“”,实际写入键盘存储区的是,实际写入键盘存储区的是31H31H 即即 00110001B00110001B键入键入“A A”, 实际写入键盘存储区的是实际写入键盘存储区的是41H41H 即即 01000001B01000001B又如:欲显示又如:
13、欲显示“0 0”,应把,应把 30H30H 即即 00110000B00110000B 显示存储区显示存储区 欲显示欲显示“F F ”,应把,应把 46H46H 即即 01000110B01000110B 显示存储区显示存储区 输入输入/ / 输出用字符输出用字符要求牢记以下要求牢记以下1818个字符的个字符的ASCASC码码:0 09 9的的ASCASC码为码为 30H 30H 39H39HA AF F的的ASCASC码为码为 41H 41H 46H46H回车符回车符的的ASCASC码为码为 0DH0DH换行符换行符的的ASCASC码为码为 0AH0AH1000010110000101 三三
14、. . 码制码制 解决在微型机领域中如何表示有符号数解决在微型机领域中如何表示有符号数(一)(一) 真值和机器数的概念真值和机器数的概念计算机只能识别计算机只能识别0和和1组成的数或代码,所以有符号数的组成的数或代码,所以有符号数的符号也只能用符号也只能用0和和1来表示来表示 1 1真值真值:一个数的数值:一个数的数值 用用“”表示正数,用表示正数,用“”表示负数表示负数 把符号数值化,用把符号数值化,用0 0表示表示“+”+”,用,用1 1表示表示“-”-”,这,这 样,连同符号位在一起作为一个数,称为机器数。样,连同符号位在一起作为一个数,称为机器数。 正数正数 负数负数 0 0 XXXX
15、XXXXXXXXXX 1 1 XXXXXXXXXXXXXX2 2机器数机器数:在计算机中如何表示正负:在计算机中如何表示正负? ?由于数值部分的表示方法不同,有符号数可有三种表示由于数值部分的表示方法不同,有符号数可有三种表示方法(即机器数有三种形式),分别叫做:方法(即机器数有三种形式),分别叫做: 原码、原码、 反码、反码、 补码补码3 3字长字长:包括符号位在内,一个二进制数占有的位数:包括符号位在内,一个二进制数占有的位数 1. 原码:原码: 最高位为符号位最高位为符号位,数值位部分就是该数的绝对值数值位部分就是该数的绝对值。 例如:例如:假设某机器的字长为假设某机器的字长为8位,则:
16、位,则:+23(17H)的原码机器数为:的原码机器数为:- 23(-17H)的原码机器数为:的原码机器数为: 其中最高位是符号位,后其中最高位是符号位,后7位是数值位。位是数值位。0001011110010111 2. 反码:反码: 把把最高位规定为符号位最高位规定为符号位,数值部分对正数是其绝对值,数值部分对正数是其绝对值,对于对于负数则是其绝对值按位取反负数则是其绝对值按位取反(即(即1变变0,0变变1)。)。例如:例如:+23的反码机器数为的反码机器数为 - 23的反码机器数为的反码机器数为 数字数字0的反码有的反码有2种表示:种表示: (+0)10=(00000000)2 (- 0)1
17、0=(11111111)20001011111101000 3. 补码:补码: 对于对于正数的补码同原码、反码正数的补码同原码、反码,负数的数值位部分为其,负数的数值位部分为其绝绝对值按位取反后末位加对值按位取反后末位加1所得。所得。 例如例如:+23的反码为的反码为 -23的反码为的反码为 - 23的补码为的补码为000101111110100011101001小结:小结: 机器数比真值数多一个符号位。机器数比真值数多一个符号位。 正数的原、反、补码与真值数相同。正数的原、反、补码与真值数相同。 负数原码的数值部分与真值相同;负数反码的数值部分负数原码的数值部分与真值相同;负数反码的数值部分
18、为真值数按位取反为真值数按位取反; ;负数补码的数值部分为真值数按位取反负数补码的数值部分为真值数按位取反末位加末位加1 1。 没有负零的补码,或者说负零的补码与正零的补码相同。没有负零的补码,或者说负零的补码与正零的补码相同。 补码机器数的数值范围补码机器数的数值范围 设机器数字长设机器数字长=n=n位位, ,用来表示整数用来表示整数, ,则则n n位补码数位补码数, ,其真值范其真值范 围为围为: : -2-2n-1 n-1 +2+2n-1 n-1 - 1- 1由于补码表示的机器数更适合运算,为此,计算机系统中由于补码表示的机器数更适合运算,为此,计算机系统中 负数一律用补码表示。负数一律
19、用补码表示。设:设:8 8位补码数为位补码数为 1000,00001000,0000 0111,11110111,1111 则:十进制真值数为则:十进制真值数为 - - 128 128 +127+127设:设:1616位补码数为位补码数为 1000,0000,0000,00001000,0000,0000,00000111,1111,1111,11110111,1111,1111,1111则:十进制真值数为则:十进制真值数为 -32768 -32768 +32767+32767 (2 2)设)设XX补补 =(96)=(96)1616, ,则则x =( ? )x =( ? )1010 解解: :
20、 x x补补 =(96)=(96)16 16 = = ( 10010110 10010110 )2 则则 x = -x = -(11010101101010)2 2 =(-106)=(-106)1010 (1 1)设)设x =(-120)x =(-120)1010, ,则则xx补补 =( ? )=( ? )1616 解:解:x =(-120)x =(-120)10 10 =(-1111000)=(-1111000)2 2 则则 xx补补 =(1000,1000)=(1000,1000)2 2 =(88) =(88)1616 真值与机器数的转换真值与机器数的转换( (设字长设字长n=8) n=8
21、) (二)整数补码的运算(二)整数补码的运算 关于关于“模模”的概念的概念 一个计量器的最大容量称为该计量器的一个计量器的最大容量称为该计量器的“模模”四位计数器能存四位计数器能存0000000011111111共十六个数共十六个数, , 模模2 24 4八位计数器能存八位计数器能存0000,00000000,00001111,11111111,1111共共256256个数,个数, 模模 2 28 8 十六位计数器能存十六位计数器能存0000,0000,0000,00000000,0000,0000,00001111,1111,1111,11111111,1111,1111,1111共共655
22、3665536个数,个数, 模模 2 21616 2 2 四位的加法器四位的加法器(由四个全加器组成)模(由四个全加器组成)模 2 24 41616011一位全加器有一位全加器有3 3个输入端个输入端( (加数加数, ,被加数被加数, ,低位向本位的进位低位向本位的进位) ) 2 2个输出端个输出端( (本位和本位和, ,本位向高位的进位本位向高位的进位) )0 在上述加法器上进行在上述加法器上进行: 7+6=13,: 7+6=13,进位为进位为0 0 8+8=0, 8+8=0,进位为进位为1 1 进位为进位为“1 1”,其值为,其值为1616,就是四位加法器的,就是四位加法器的“模模”, 它
23、被运算器它被运算器“丢失丢失”了。了。 0 01 11 11 11 11 10 00 01 11 11 10 0 3.3.整数补码的加减运算整数补码的加减运算 补补补补补补补补补补 补补 条件:条件:(1)(1) 符号位参加运算符号位参加运算 (2)(2) 以以2 2n n为模(为字长)为模(为字长) (3)(3) 当真值满足下列条件时,结果是正确的,否则结当真值满足下列条件时,结果是正确的,否则结果错误果错误 2 2n-1 n-1 x, y, x+y ,x x, y, x+y ,xy +2y +127 +127, 2 21515-1,-2-1,255 有溢出有溢出16位无符号数运算位无符号数
24、运算, 结果结果65535 有溢出有溢出32位无符号数运算位无符号数运算, 结果结果 232_1 有溢出有溢出8位有符号数运算位有符号数运算, -128结果结果127 有溢出有溢出16位有符号数运算位有符号数运算, -32768结果结果32767 有溢出有溢出32位有符号数运算位有符号数运算, -231结果结果 231_1 有溢出有溢出2. CPU如何判断溢出如何判断溢出 由于溢出和操作数的性质有关由于溢出和操作数的性质有关,而操作数的性质是由而操作数的性质是由 程序员定义的。程序员定义的。CPU只能默认一种选择只能默认一种选择,即即CPU一律一律 默认操作数是有符号补码数默认操作数是有符号补
25、码数,并以此来设置溢出标志。并以此来设置溢出标志。 3.3.程序员如何判断溢出程序员如何判断溢出H 有符号数运算有符号数运算, ,判判O O标志标志,O,O标志为标志为1,1,有溢出有溢出H 无符号数加无符号数加/ /减减, ,判判C C标志标志,C,C标志为标志为1,1,有溢出有溢出例例: :下列指令执行后下列指令执行后 AL=?AL=? A.C.O.P.S.Z A.C.O.P.S.Z 为何值为何值? ? MOV AL ,0C8H ADD AL ,0C8H AL=90H, AL=90H,如果如果C8HC8H为无符号数为无符号数( (值值=200),=200),则有溢出。则有溢出。 如果如果C
26、8HC8H为有符号数为有符号数( (值值=-56),=-56),则无溢出。则无溢出。 这这6 6个标志中个标志中,C.O.P.S.Z,C.O.P.S.Z可为程序的转移提供测试条件。可为程序的转移提供测试条件。000010011000 100 110 01 0 0 1 1 0C=1S=1P=1 O=0Z=01A=1 源程序中的语句类型源程序中的语句类型 一个完整的源程序应包含一个完整的源程序应包含2 2类语句类语句: : 符号指令、汇编伪指令符号指令、汇编伪指令( (伪语句伪语句) )标号名、变量名、段名、过程名标号名、变量名、段名、过程名命名规则命名规则: :以字母开头以字母开头, ,后跟字后
27、跟字母、数字母、数字长度长度3131个字符个字符H符号指令符号指令: :经汇编后经汇编后, ,其目标指令通知其目标指令通知CPUCPU进行什么操作进行什么操作H伪伪 指指 令令: :是非机器指令,是在汇编期间进行操作的。是非机器指令,是在汇编期间进行操作的。 为汇编程序为汇编程序, ,链接程序提供汇编链接信息链接程序提供汇编链接信息 符号名符号名 伪指令伪指令伪指令伪指令 标号标号 : 符号指令符号指令符号指令符号指令此处无冒号此处无冒号 4.4 4.4 常用伪指令及运算符常用伪指令及运算符1.1.字节字义伪指令 变量名 DB DB 一串用逗号间隔的单字节数 说明说明: :v DB DB De
28、fine Byte Define Byte 的缩写的缩写, ,“定义字节定义字节”。v ? ? 随机数随机数, Dup , Dup Duplicate(Duplicate(重复重复) )v 3 Dup(?) 3 Dup(?) 代表代表3 3个用逗号间隔的随机数个用逗号间隔的随机数v 5 Dup (A) 5 Dup (A) 代表代表5 5个用逗号间隔的个用逗号间隔的A A的的ASCASC码码如如: : N1 DB 12H,64,-1,3*3 DB 01010101B, A , B DB 0A6H, HELLO N2 DB ?,?,? ;与下条等价与下条等价 N2 DB 3 DUP(?)汇编后汇编
29、后12 H40 HFF H09 H55 H41 H42 HA6 H48 H45 H4C H4C H4F HX X X XX XN1:N2:功能功能: :H通知汇编程序把通知汇编程序把DBDB后跟的单字后跟的单字 节数节数, ,依次存入从变量依次存入从变量(如如N1)N1) 开始的单元开始的单元, ,负数用补码表示负数用补码表示, , 单引号中的字符翻译成单引号中的字符翻译成ASCASC码。码。 如如: : N1 DB 12H,64,-1,3*3 DB 01010101B, A , B DB 0A6H, HELLON2 DB ?,?,? ;与下条等价与下条等价N2 DB 3 DUP(?)如如:
30、: N1 DB 12H,64,-1,3*3 DB 01010101B, A , B DB 0A6H, HELLON2 DB ?,?,? ;与下条等价与下条等价N2 DB 3 DUP(?)功能功能: :H H用用DBDB定义的这些内存单元定义的这些内存单元(N1(N1 N1+12,N1+12, N2 N2 N2+2)N2+2)的属性均为的属性均为“字节型字节型”。汇编后汇编后12 H40 HFF H09 H55 H41 H42 HA6 H48 H45 H4C H4C H4F HX X X XX XN1:N2:N1+12:N2+2:2.2.字定义伪指令字定义伪指令 变量名变量名 DWDW 一串用逗
31、号间隔的双字节数一串用逗号间隔的双字节数如如: :WNUM DW 1234H,12, AB, C DW ?,? DW 2 DUP(?)说明说明: : H H DW DW Define Word Define Word “字定义字定义” H H ? ? 双字节随机数双字节随机数 H H 单引号中只能是一个或两个字符单引号中只能是一个或两个字符 功能功能: : H H通知汇编程序把通知汇编程序把DWDW后跟的双字节数后跟的双字节数, , 依次存入从变量名开始的单元依次存入从变量名开始的单元, ,每一个数每一个数 占占2 2个字节个字节, ,低位字节低位字节低址单元低址单元, , 高位字节高位字节相
32、邻的高址单元。相邻的高址单元。功能功能: :H H用用DWDW定义的这些单元的属性都是定义的这些单元的属性都是“字型字型”, , 如上例如上例, WNUM , WNUM WNUM+11WNUM+11这这1212个单元的个单元的 属性都是属性都是“字型字型”。 汇编后汇编后WNUM:34 H 12 H 0CH0 042 H41 H43 H0 0X X X X X XX XWNUM+11:功能功能: :H H通知汇编程序把通知汇编程序把DDDD后跟的数存入变量名开始的单元后跟的数存入变量名开始的单元, , 每一个数占每一个数占4 4个字节个字节, ,低位字节低位字节低址单元低址单元, ,高位字高位
33、字 节节高址单元。高址单元。 H H用用DDDD定义的这些单元的属性都是定义的这些单元的属性都是“双字型双字型”, ,上例上例 DNUM DNUM DNUM+3DNUM+3单元单元, ,这些单元都是双字型单元。这些单元都是双字型单元。3. 3. 双字定义伪指令双字定义伪指令 变量名变量名 DDDD 一串用逗号间隔的一串用逗号间隔的4 4字节数字节数 如如: : DNUM DD 12345678H 汇编后汇编后DNUM: 34H78H 56 H 12H5. 5. 等值伪指令等值伪指令 符号常数符号常数 EQUEQU 表达式表达式 如如: : NUM EQU 33 功能功能: : 定义符号常数定义
34、符号常数NUMNUM的值为的值为33 33 6. 6. 等号伪指令等号伪指令 符号常数符号常数= =表达式表达式 如如: : NUM = 33 功能功能: :定义符号常数定义符号常数NUMNUM的值为的值为33 33 4. 4. 多字节定义伪指令多字节定义伪指令 变量名变量名 DFDF 一串用逗号间隔的一串用逗号间隔的6 6字节数字节数 变量名变量名 DQDQ 一串用逗号间隔的一串用逗号间隔的8 8字节数字节数 变量名变量名 DTDT 一串用逗号间隔的一串用逗号间隔的1010字节数字节数功能功能: : 通知汇编程序为通知汇编程序为DF/DQ/DTDF/DQ/DT后跟的每一个数,分配后跟的每一个
35、数,分配 6/8/106/8/10个单元。个单元。 三三. . 常用运算符常用运算符 1. 1. 算术运算符算术运算符: +, -, : +, -, * *, / , / 2. 2. 关系运算符关系运算符: : EQ( EQ(等于等于), NE(), NE(不等于不等于), GT(), GT(大于大于),LT(),LT(小于小于),), GE( GE(大于或等于大于或等于) )例如例如: : NUM EQU 33 MOV AL, NUM;该指令与下条指令等价该指令与下条指令等价 MOV AL , 33区别区别: :H H用用EQUEQU定义的符号常数定义的符号常数, ,其值在后继语句中不能更改
36、其值在后继语句中不能更改H H用用“= =”定义的符号常数定义的符号常数, ,其值在后继语句中可以重新定义其值在后继语句中可以重新定义 应用应用: : H H$ $运算符紧跟在运算符紧跟在 DBDB、DWDW、DDDD伪指令之后伪指令之后, ,统计字符统计字符 串的长度。串的长度。 例如数据段有例如数据段有: : BUF DB THE QUICK BROWN FOX ;字符串长度字符串长度19 LLL EQU $-BUF 汇编后汇编后 符号常数符号常数LLLLLL的值即为的值即为19193. $3. $运算符运算符 H H汇编程序对源程序是逐行汇编的汇编程序对源程序是逐行汇编的,$,$运算符可
37、以返回运算符可以返回 汇编计数器的当前值。汇编计数器的当前值。如如: : MOV AX, SEG DATA MOV DS, AX设设“DATADATA”是数据段的段名是数据段的段名, ,上述两条指令算出数据段上述两条指令算出数据段的段基址的段基址, ,先赋给先赋给AX,AX,再转赋再转赋DSDS。 5.OFFSET5.OFFSET运算符运算符 H H格式:格式:OFFSET OFFSET 变量名或标号名变量名或标号名 H H功能:算出某个变量或标号名所在单元的偏移地址(有效功能:算出某个变量或标号名所在单元的偏移地址(有效地址)。地址)。4. SEG4. SEG运算符运算符 H H格式格式:
38、SEG : SEG 段名或变量名或标号名段名或变量名或标号名 H H功能功能: : 计算某一逻辑段的段基址计算某一逻辑段的段基址 设以设以“DATADATA”为段名的数据段中,存在为段名的数据段中,存在 BUF DB 12 ,34 ,56代码段:代码段: MOV AX,SEG DATA MOV DS,AX MOV BX,OFFSET BUF MOV AL,BX ;AL=12以下两条指令等价的:以下两条指令等价的: MOV BX,OFFSET BUF LEA BX,BUF6. PTRPTR运算符运算符 格式格式: : 类型说明符类型说明符 PTR PTR 地址表达式地址表达式 功能功能: : 在
39、在本条指令本条指令中中临时修改临时修改地址表达式的属性地址表达式的属性 内存单元内存单元5 5种寻址方式种寻址方式子程序的名称子程序的名称 BYTE BYTE(字节)(字节) WORDWORD(字)(字) DWORDDWORD(双字)(双字) FARFAR(远)(远) NEARNEAR(近)(近)举例:设数据段有:举例:设数据段有: BUF DB 11,22,33,44 WBUF DW ?,?,? XX DB 0FFH,0 YY DB 0FFH,0FFH,0,0 ZZ DB 0FFH,0FFH,0FFH,0 代码段:代码段: MOV AX,BUF MOV AL,BUF MOV AX,WORD
40、PTR BUF ; AH=22,AL=11 MOV BUF,12H MOV BUF,1234H MOV WORD PTR BUF,1234H ;BUF单元为单元为34H,BUF+1单元为单元为12H 汇编后汇编后BUF:11 223344XXXXXXXXFFH 0 FFHFFHXX:WBUF:YY:举例:设数据段有:举例:设数据段有: BUF DB 11,22,33,44 WBUF DW ?,?,? XX DB 0FFH,0 YY DB 0FFH,0FFH,0,0 ZZ DB 0FFH,0FFH,0FFH,0 MOV BX,OFFSET XX MOV SI,OFFSET YY MOV DI,O
41、FFSET ZZ MOV BX,12H MOV BYTE PTR BX,12H ;XX单元为单元为12H MOV WORD PTR BX,12H ;XX单元为单元为12H, XX+1单元为单元为0 汇编后汇编后BUF:11 223344XXXXXXXXFFH 0 FFHFFHXX:WBUF:YY:4.5 804864.5 80486基本集指令基本集指令分分6 6类,为讲授方便,用类,为讲授方便,用N 代表立即数,代表立即数,N8、N16、N32代表代表8、16、32位立即数位立即数R 代表寄存器操作数,代表寄存器操作数,R8、R16、R32代表代表8、16、32位位寄存器操作数寄存器操作数M
42、代表内存操作数,代表内存操作数,M8、M16、M32代表代表8、16、32位位内存操作数内存操作数S 代表段寄存器代表段寄存器第一类、第一类、 传送类传送类本类指令执行后,不影响状态标志本类指令执行后,不影响状态标志MOV 目目 , 源源 R / M , N R / M / S , R ; 目标不允许是目标不允许是CS R / M , S R / S , M ; 目标不允许是目标不允许是CS功能:功能:源源目,源不变,不影响目,源不变,不影响6种标志种标志 为了深入理解数值定义伪指令、学习为了深入理解数值定义伪指令、学习PTRPTR运算符的使用运算符的使用, ,请仔细请仔细 阅读以下例题。阅读
43、以下例题。 【例例】阅读以下程序阅读以下程序, ,写出指令执行后的目标操作数。写出指令执行后的目标操作数。 注意事项:注意事项: 1. 立即数不能直接送段寄存器立即数不能直接送段寄存器 MOV DS, 3000H 2. 目标操作数不允许用立即数方式目标操作数不允许用立即数方式 MOV 2000H, AL 3. 不允许在两个存储单元间传送数据不允许在两个存储单元间传送数据 MOV2000H,3000H 4. 不允许在两个段寄存器之间传送数据不允许在两个段寄存器之间传送数据 MOV DS, ES 5. 源、目属性要一致源、目属性要一致 代码段代码段: MOV DS,SEG 数据段段基址数据段段基址
44、 ;对对DS初始化初始化 MOV BL,BNUM ;BL=? 所以,所以,BL=12H数据段经过汇编之后,数据段经过汇编之后,设数据段设数据段:BNUM DB 12H,34H,56H,78H,90HWNUM DW 1122H,3344H,5566HDNUM DD 13572468H,87654321HFNUM DF 112233445566H BNUM:12H34H56H78H90H 代码段代码段: MOV DS,SEG 数据段段基址数据段段基址 MOV BX,WNUM+2 ;BX=?数据段经过汇编之后,数据段经过汇编之后,WNUM:22H11H44H33H66H55H所以,所以,BX=334
45、4H设数据段设数据段:BNUM DB 12H,34H,56H,78H,90HWNUM DW 1122H,3344H,5566HDNUM DD 13572468H,87654321HFNUM DF 112233445566H 代码段代码段: MOV DS,SEG 数据段段基址数据段段基址 MOV BX, WORD PTR BNUM+1 ;BX=? 所以,所以,BX=5634HBNUM:12H34H56H78H90H数据段经过汇编之后数据段经过汇编之后,设数据段设数据段:BNUM DB 12H,34H,56H,78H,90HWNUM DW 1122H,3344H,5566HDNUM DD 1357
46、2468H,87654321HFNUM DF 112233445566H 代码段代码段: MOV DS,SEG 数据段段基址数据段段基址 MOV BX, WORD PTR DNUM 3 ;BX=?数据段经过汇编之后,数据段经过汇编之后,所以,所以,BX=2113HDNUM:68H24H57H13H21H43H65H87H设数据段设数据段:BNUM DB 12H,34H,56H,78H,90HWNUM DW 1122H,3344H,5566HDNUM DD 13572468H,87654321HFNUM DF 112233445566H 代码段代码段: MOV DS,SEG 数据段段基址数据段段
47、基址 MOV SI, OFFSET BNUM MOV BX, SI+1 ;BX=? 所以,所以,BX=5634HBNUM:12H34H56H78H90H数据段经过汇编之后,数据段经过汇编之后,设数据段设数据段:BNUM DB 12H,34H,56H,78H,90HWNUM DW 1122H,3344H,5566HDNUM DD 13572468H,87654321HFNUM DF 112233445566H (16位通用寄存器) (内存操作数) 该指令常用来设置一个16位的寄存器作为地址指针; 该指令的执行效果与 MOV 目标操作数 , OFFSET 内存操作数 相同。DS=1000h1010
48、0h00020020 0100h BX BUF例:例: LEA BX, BUF 执行后执行后 BX=100H MOV BX,OFFSET BUF 堆栈按照的原则组织的一段内存区域。8088中规定堆栈设 置在堆栈段(SS段)内,堆栈指针SP的初值决定了堆栈的大小。 SP始终指向堆栈的顶部,即始终指向最后推入堆栈的信息所在 的单元。 00000SS:0000SS:SP堆堆栈栈段段栈顶:栈区的低地址栈顶:栈区的低地址栈底:栈区的高地址栈底:栈区的高地址堆栈段寄存器堆栈段寄存器SS:存放堆栈段段基址:存放堆栈段段基址堆栈指针堆栈指针ESP(SP):存放栈顶单元的偏移地址:存放栈顶单元的偏移地址 SS、
49、ESP(SP)初值,由程序员赋值或初值,由程序员赋值或DOS系统自动赋值系统自动赋值数据进栈过程(以数据进栈过程(以16位操作数进栈为例)位操作数进栈为例)双字节操作数双字节操作数高字节高字节低字节低字节SPX X HX X H高高8位位SS:SP 11 2 H3 4 H堆栈区堆栈区SP 2SP数据进栈过程(以数据进栈过程(以16位操作数进栈为例)位操作数进栈为例)X X HX X H 1 2 HSP高高8位位SS:SP 13 4 H低低8位位SS:SP 21 2 H双字节操作数双字节操作数高字节高字节低字节低字节堆栈区堆栈区SP 2SP数据进栈过程(以数据进栈过程(以16位操作数进栈为例)位
50、操作数进栈为例)高高8位位SS:SP 1X X HX X H 1 2 H低低8位位SS:SP 2 3 4 HSP3 4 H1 2 H双字节操作数双字节操作数高字节高字节低字节低字节堆栈区堆栈区SP 2SPSP高字节高字节低字节低字节堆栈区堆栈区X X HX X H 1 2 H 3 4 HSP数据出栈过程(以数据出栈过程(以16位操作数出栈为例)位操作数出栈为例)SS:SP目标目标(目标寄存器,目标单元目标寄存器,目标单元)低低8位位7 8 H 5 6 H16位目标寄存器位目标寄存器数据出栈过程(以数据出栈过程(以16位操作数出栈为例)位操作数出栈为例)SS:SP目标目标(目标寄存器,目标单元目
51、标寄存器,目标单元)低低8位位高字节高字节低字节低字节堆栈区堆栈区X X HX X H3 4 HSPSS:SP+1目标高目标高8位位1 2 H3 4 H 5 6 H16位目标寄存器位目标寄存器高字节高字节低字节低字节堆栈区堆栈区X X HX X H 1 2 H 3 4 H3 4 H 1 2 H SP+2SP数据出栈过程(以数据出栈过程(以16位操作数出栈为例)位操作数出栈为例)SS:SP目标目标(目标寄存器,目标单元目标寄存器,目标单元)低低8位位SS:SP+1目标高目标高8位位SP16位目标寄存器位目标寄存器高字节高字节低字节低字节堆栈区堆栈区X X HX X H 1 2 H 3 4 H3
52、4 H 1 2 H SP+2SP数据出栈过程(以数据出栈过程(以16位操作数出栈为例)位操作数出栈为例)SS:SP目标目标(目标寄存器,目标单元目标寄存器,目标单元)低低8位位SS:SP+1目标高目标高8位位SP16位目标寄存器位目标寄存器 80X86的堆栈是向低地址方向延伸的,栈顶是的堆栈是向低地址方向延伸的,栈顶是“浮动浮动”的的 注:一次进栈、出栈的数据至少是注:一次进栈、出栈的数据至少是2字节字节进栈指令进栈指令PUSH 源操作数源操作数 N16 / N32 S / R16 / R32 / M16 / M32如:如:PUSH WORD PTR BXPUSH DWORD PTR SI+5
53、说明:非直接寻址的内存操作数,必须用说明:非直接寻址的内存操作数,必须用PTR说明属性说明属性 POP 目标操作数目标操作数 R16 / R32 / M16 / M32 S(CS非法)非法)如:如: PUSH AXPOP BX ;BX=AX说明:说明:非直接寻址的内存操作数,必须用非直接寻址的内存操作数,必须用PTR说明属性说明属性加法指令加法指令加法(字、字节)加法(字、字节)带进位加法指令带进位加法指令带进位加法带进位加法(字、字节字、字节)加加 1 指令指令加加 1(字、字节)(字、字节)减法指令减法指令减法(字、字节)减法(字、字节)带借位减法指令带借位减法指令带借位减法带借位减法(字
54、、字节字、字节)减减 1 指令指令减减 1(字、字节)(字、字节)比较指令比较指令比较(字、字节)比较(字、字节)求补指令求补指令求补码求补码无符号数乘法无符号数乘法不带符号数乘法不带符号数乘法(字字,字节字节)带符号数乘法带符号数乘法带符号数乘法带符号数乘法(字字,字节字节)无符号数除法无符号数除法不带符号数除法不带符号数除法(字字,字节字节)带符号数乘法带符号数乘法带符号数除法带符号数除法(字字,字节字节)符号扩展指令符号扩展指令扩展扩展AL中的符号中的符号不影响不影响符号扩展指令符号扩展指令扩展扩展AX中的符号中的符号不影响不影响 源操作数:通用寄存器、存储器、立即数 目的操作数:通用寄
55、存器、存储器 执行的操作: 注:该指令影响标志位 DST+SRC O S Z A P C0 0 1 0 0 1 0 0 0 源操作数:通用寄存器、存储器、立即数 目的操作数:通用寄存器、存储器 执行的操作: 注:该指令影响标志位 DST+SRC+C O S Z A P C 0 0 1 0 0 1 0 0 0 操作数:通用寄存器、存储器 (不能是段寄存器或立即数) 执行的操作: 注:该指令影响标志位 例: INC BX INC byte ptr SI OPRD + 1 O S Z A P 0 0 1 0 0 1 0 0 0 源操作数:通用寄存器、存储器、立即数 目的操作数:通用寄存器、存储器 执
56、行的操作: 注:该指令影响标志位 DST - SRC O S Z A P C0 0 1 0 0 1 0 0 0 源操作数:通用寄存器、存储器、立即数 目的操作数:通用寄存器、存储器 执行的操作: 注:该指令影响标志位 DSTSRC-C O S Z A P C0 0 1 0 0 1 0 0 0 操作数:通用寄存器、存储器 (不能是段寄存器或立即数) 执行的操作: 注:该指令影响标志位 例: DEC BX DEC word ptrSI OPRD - 1 O S Z A P 0 0 1 0 0 1 0 0 0 操作数:通用寄存器、存储器 执行的操作:求补指令,将操作数按位取反后加1,再送回操作数。
57、注:该指令影响标志位 OPRD O S Z A P C 0 0 1 0 0 1 0 0 0 源操作数:通用寄存器、存储器、立即数 目的操作数:通用寄存器、存储器 执行的操作: 注:该指令影响标志位 DST - SRC O S Z A P C0 0 1 0 0 1 0 0 0 无符号数乘法 源操作数:通用寄存器、存储器(不能是立即数) 目的操作数:EDX, EAX (隐含) 执行的操作:字节操作 (AH,AL) (AL) (SRC) 字操作 (DX,AX) (AX) (SRC) 双字操作 (EDX,EAX) (EAX) (SRC) 注:该指令影响标志位 AL SRC O C0 0 1 0 0 1
58、 0 0 0 有符号数乘法 源操作数:通用寄存器、存储器(不能是立即数) 目的操作数:EDX, EAX (隐含) 执行的操作:字节操作 (AH,AL) (AL) (SRC) 字操作 (DX,AX) (AX) (SRC) 双字操作 (EDX,EAX) (EAX) (SRC) 注:该指令影响标志位 AL SRC O C0 0 1 0 0 1 0 0 0 无符号数除法有符号数除法 源操作数:通用寄存器、存储器 (不能是立即数) 目的操作数:EDX, EAX (隐含) 执行的操作:字节操作 (AL) (AX) / (SRC) 商 (AH) (AX) / (SRC) 余数 字操作 (AX) (DX,AX
59、) / (SRC) 商 (DX) (DX,AX) / (SRC) 余数 双字操作 (EAX) (EDX,EAX) / (SRC) 商 (DEX) (EDX,EAX) / (SRC) 余数 注:该指令对各标志位均无定义 。 前面提到的所有运算指令都是二进制数的运算指令,怎样得到十进制的运算结果呢?8088提供了一套十进制调整指令。 BCD码 用二进制编码的十进制数。 组合 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 0 1 2 3 4 5 6 7 8 9 未组合 UUUU0000 UUUU0001 UUUU0010 UUUU1001 0 1
60、 2 9 组合组合/未组合未组合BCD码数(即压缩码数(即压缩/未压缩未压缩BCD码数)码数)00001001000010018位位十位十位个位个位组组合合BCD码码0000000010018位位未未组组合合BCD码码 BCD码数的加减运算码数的加减运算BCD码数是用码数是用4位二进数代表位二进数代表1位十进数位十进数其运算法则应是:其运算法则应是:“逢十进一,减一当十逢十进一,减一当十”假设:假设:N1=7=(0000 , 0111)BCD N2=6=(0000 , 0110)BCD则:则:N1+N2=07+06=13即结果应当等于即结果应当等于(0001 , 0011)BCD 如何实现如何
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度厂房租赁合同书(含租赁面积)
- 二零二五年度KTV装修设计、施工、监理一体化合同
- 2025年财务会计远程服务劳动合同
- 二零二五年度仓储配送服务与仓储设备租赁合同
- 二零二五年办公家具与设备租赁采购合同
- 2025年版汽车维修保养服务合同书
- 2025年度设备租赁保证担保合同协议书范本
- 二零二五年度财务数据保密与信息安全保障合同
- 二零二五版草原承包与农业科技推广合同
- 2025版icp业务跨境业务合作框架协议
- 活动游戏亲子活动方案
- 2025年初中体育教师招聘考试测试卷及答案(共3套)
- 【真题速递】山东省2025年第一批省考面试真题
- 2025年延长石油集团招聘笔试冲刺题2025
- 2026年中考英语一轮复习:1600个必背词汇 话题记忆+默写本
- 云南保山永昌教育发展有限公司招聘考试真题2024
- 尿毒症个案护理
- 变电站改扩建安全培训
- 4.6.3神经系统支配下的运动 课件 人教版八年级生物上册
- 《民营经济促进法》金融支持条款的解读与实施路径研究
- 2023-2024学年山东省日照市高二下学期期末考试数学试题(解析版)
评论
0/150
提交评论