《IBMPC汇编语言程序设计》由会员分享,可在线阅读,更多相关《IBMPC汇编语言程序设计(28页珍藏版)》请在金锄头文库上搜索。
1、IBMPCIBMPC汇编语言汇编语言程序设计程序设计( (第第2 2版版) )清华大学计算机系列教材清华大学计算机系列教材 沈美名沈美名 温冬蝉温冬蝉 编著编著计算机语言的发展计算机语言的发展 机器语言机器语言FORTRANFORTRANBASICBASICCOBOLCOBOLPASCALPASCALC/C+C/C+JAVAJAVA.汇编语言汇编语言高级语言高级语言汇编语言的特点汇编语言的特点 面向机器的低级语言,通常是为特定的计算面向机器的低级语言,通常是为特定的计算 机或计算机系列机或计算机系列专门设计的。专门设计的。 保持了机器语言的优点,具有直接和简捷保持了机器语言的优点,具有直接和简
2、捷 的特点。的特点。 可有效地访问、控制计算机的各种硬件设备可有效地访问、控制计算机的各种硬件设备, , 如磁盘、存储器、如磁盘、存储器、CPUCPU、I/OI/O端口等。端口等。 目标代码简短,占用内存少,执行速度快,目标代码简短,占用内存少,执行速度快, 是高效的程序设计语言。是高效的程序设计语言。 经常与高级语言配合使用,应用十分广泛经常与高级语言配合使用,应用十分广泛。 #include #include int main(int argc, char* argv) int a,b,c; a=1; b=2; c=a+b; printf(“c=%dn,c); return 0; 编程实现
3、编程实现编程实现编程实现 c =a+b c =a+b c =a+b c =a+b,并在屏幕上显示出结果,并在屏幕上显示出结果,并在屏幕上显示出结果,并在屏幕上显示出结果。 例例例例1 1编译后的目标文编译后的目标文件达到件达到KBdata segmentdata segmenta db ?a db ?b db ?b db ?c db ?c db ?string db c=$string db c=$data endsdata endscode segmentcode segmentmain proc farmain proc far assume cs:code, assume cs:code
4、, ds:data, es:datads:data, es:datastart:start: push dspush ds sub ax,ax sub ax,ax push ax push ax mov ax,data mov ax,data mov ds,ax mov ds,ax mov es,ax mov es,ax mov a,1mov a,1 mov b,2 mov b,2 mov al,a mov al,a add al,b add al,b mov c,al mov c,al lea dx,stringlea dx,string mov ah,09 mov ah,09 int 21
5、h int 21h add c,30hadd c,30h mov dl,c mov dl,c mov ah,2 mov ah,2 int 21h int 21h mov dl,0ah mov dl,0ah int 21h int 21h mov dl,0dh mov dl,0dh int 21h int 21h ret retmain endpmain endpcode endscode ends end startend start例例 2. C = a + b 2. C = a + b汇编后的目汇编后的目标文件只有标文件只有208208字节字节汇编语言的应用汇编语言的应用系统程序、效率代码
6、、系统程序、效率代码、I/OI/O驱动程序驱动程序 70%70%以上的系统软件是用汇编语言编写的。以上的系统软件是用汇编语言编写的。 某些快速处理、位处理、访问硬件设备等某些快速处理、位处理、访问硬件设备等 高效程序是用汇编语言编写的。高效程序是用汇编语言编写的。 高级绘图程序、视频游戏程序一般是用汇高级绘图程序、视频游戏程序一般是用汇 编语言编写的编语言编写的。教师建议教师建议目标:目标: 了解汇编语言的特性及其编程技术,了解汇编语言的特性及其编程技术, 建立起建立起“机器机器”和和“程序程序”、“空间空间”和和 “ “时间时间”的概念。的概念。建议:建议: 充分注意充分注意“汇编汇编”课实
7、践性强的特点,课实践性强的特点, 多读程序多读程序, ,多写程序多写程序, ,多上机调试程序多上机调试程序, , 熟悉熟悉PCPC机的编程结构,机的编程结构, 掌握汇编语言及其程序设计的基本概掌握汇编语言及其程序设计的基本概 念、方法和技巧念、方法和技巧。参考资料参考资料X86X86汇编语言程序设计汇编语言程序设计沈美明沈美明 温冬婵温冬婵 清华大学出版社清华大学出版社2.IBM PC 2.IBM PC 汇编语言与程序设计汇编语言与程序设计 PETER ABEL PETER ABEL 编著编著 第第4 4版版 清华大学出版社清华大学出版社.PRENTICE HALL.PRENTICE HALL
8、第第5 5版版 人民邮电出版社人民邮电出版社3. IBM PC 3. IBM PC 汇编语言与程序设计例题习题集汇编语言与程序设计例题习题集 温冬婵温冬婵 沈美明沈美明 清华大学出版社清华大学出版社教学日历:教学日历:第一周第一周 绪论绪论 数制数制 数制之间的转换数制之间的转换 数和字符的表示数和字符的表示 运算运算第二周第二周 计算机组织计算机组织 CPU CPU 存储器存储器 外部设备外部设备 寻址方式寻址方式第三周第三周 指令系统(指令系统(1 1)第四周第四周 指令系统(指令系统(2 2) BIOS BIOS和和DOSDOS调用调用 第五周第五周 上机过程上机过程 完整段定义和简化段
9、定义格式完整段定义和简化段定义格式 伪操作伪操作第六周第六周 循环与分支程序设计循环与分支程序设计 子程序结构子程序结构 第七周第七周 高级汇编语言技术高级汇编语言技术 I/O I/O程序设计程序设计 第八周第八周 中断程序设计中断程序设计 复习复习第第1章章 基基 础础 知知 识识 数制数制 数制之间的转换数制之间的转换 运算运算 数和字符的表示数和字符的表示预预 备备 知知 识识存储容量存储容量1K = 1024 = 210 (Kilo) 1M = 1024K = 220 (Mega) 1G = 1024M = 230 (Giga)1个二进制位:bit (比特)8个二进制位:Byte (字
10、节) 1Byte = 8bit2个字节: Word (字) 1Word = 2Byte = 16bit1. 数数 制制 数数 制制 基基 数数 数数 码码 二进制二进制 Binary 2 0, 1 八进制八进制 Octal 8 0, 1, 2, 3, 4, 5, 6, 7 十进制十进制 Decimal 10 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 十六进制十六进制 Hexadecimal 16 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F二进制二进制: 基数为2,逢二进一 11012 = 12 3 + 12 2 + 12 0 =
11、 1310十六进制十六进制:基数为16,逢十六进一 1001, 0001, 1000, 0111 9 1 8 7 = 9 16 3 + 1 16 2 + 8 16 1 + 7 16 02. 数制之间的转换数制之间的转换 二进制二进制 十六进制十六进制 十进制十进制 二进制二进制 十进制十进制 十六进制十六进制降幂法降幂法 除法除法 二进制二进制 十六进制十六进制 0011 0101 1011 1111 3 5 B F 0011,0101,1011,1111B = 35BFH A 1 9 C 1010 0001 1001 1100 A19CH = 1010,0001,1001,1100B 101
12、1B = 23+21+20=11D 降幂法 除法 例例: 27D = ? B 27 11 3 3 1 - - - - 2n 16 8 4 2 1 1 1 0 1 1 27D = 11011B 二进制二进制 十进制十进制 十六进制十六进制 十进制十进制 BF3CH = 11163 +15162 +3161 +12160 = 48956D 降幂法 除法 例例:399D = ? H 399 143 15 399/1624/161/16 0 - - - 16n 256 16 1 F 8 1 1 8 F 399D = 18FH 算术运算算术运算 二进制数:二进制数:逢二进一逢二进一 借一为二借一为二 加
13、法规则 乘法规则 0 + 0 = 0 0 0 = 0 0 + 1 = 1 0 1 = 0 1 + 0 = 1 1 0 = 0 1 + 1 = 0 (进位1) 1 1 = 13. 运算(算术运算和逻辑运算)运算(算术运算和逻辑运算)0 5 C 3 H3 D 2 5 H4 2 E 8 H3 D 2 5 H0 5 C 3 H3 7 6 2 H1 11 1十六进制数:十六进制数:逢十六进一逢十六进一 借一为十六借一为十六 逻辑运算(逻辑运算(按位操作按位操作)“与与”运算(运算(AND) “或或”运算(运算(OR) A B AB A B AB 0 0 0 0 0 0 0 1 0 0 1 1 1 0 0
14、 1 0 1 1 1 1 1 1 1“非非”运运算算(NOT) “异或异或”运算(运算(XOR) A A A B AB 0 1 0 0 0 1 0 0 1 1 1 0 1 1 1 0例例:X=00FFH Y=5555H,求Z=XY= ? X= 0000 0000 1111 1111 B Y= 0101 0101 0101 0101 B Z= 0101 0101 1010 1010 B Z=55AAH4. 数和字符的表示数和字符的表示 计算机中正负计算机中正负数的表示数的表示 7 6 5 4 3 2 1 0符号位符号位 数值位数值位假设机器字长字长为16位:符号位符号位 = 0 正数正数 数值位
15、数值位 = 1 负数负数15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0假设机器字长字长为8位:数的常用表示法数的常用表示法 原码原码 反码反码 补码补码原码表示法原码表示法:符号:符号 + 绝对值绝对值例:n = 8bit +3原码 = 0 000,0011 = 03H - 3原码 = 1 000,0011 = 83H +0原码 = 0 000,0000 = 00H - 0原码 = 1 000,0000 = 80H 0 的表示不惟一反码表示法反码表示法:正数的反码同原码,负数的反码数值位与原码相反正数的反码同原码,负数的反码数值位与原码相反例:n = 8bit +5
16、反码 = 0 000,0101 = 05H - 5反码 = 1 111,1010 = FAH +0反码 = 0 000,0000 = 00H - 0反码 = 1 111,1111 = FFH 0 的表示不惟一例: 机器字长8位,- 46补码 = ? 46补码 = 0 0 1 0 1 1 1 0 1 1 0 1 0 0 0 1 1 1 0 1 0 0 1 0 = D2H 机器字长16位,- 46补码 = FFD2H +0补码 = 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 = - 0补码 0 的表示的表示惟一按位求反按位求反末位加一末位加一按位
17、求反按位求反末位加一末位加一补码补码(Twos Complement)表示法:表示法:正数的补码:正数的补码: 同原码负数的补码负数的补码:(1)写出与该负数相对应的正数的补码 (2)按位求反 (3)末位加一 十进制 二进制 十六进制 十进制 十六进制 n=8 n=16 +127 0111 1111 7F +32767 7FFF +126 0111 1110 7E +32766 7FFE . . . +2 0000 0010 02 +2 0002 +1 0000 0001 01 +1 0001 0 0000 0000 00 0 0000 -1 1111 1111 FF -1 FFFF -2 1
18、111 1110 FE -2 FFFE . . .-126 1000 0010 82 -32766 8002-127 1000 0001 81 -32767 8001-128 1000 0000 80 -32768 8000n位二进制补码的表数范围:位二进制补码的表数范围: - 2n-1 N 2n-1-1无符号整数的表数范围:无符号整数的表数范围: 0 N 2n-1 补码的加法和减法:补码的加法和减法:求补运算求补运算 :对一个二进制数按位求反、末位加一对一个二进制数按位求反、末位加一 X补码补码 -X补码补码 X补码补码加法规则加法规则:X+Y补码补码 = X补码补码 + Y补码补码减法规则
19、减法规则:X-Y补码补码 = X补码补码 + -Y补码补码 补码减法可转换为补码加法补码减法可转换为补码加法 64(-46) 180100 00001101 00100001 0010例:进位和溢出进位和溢出进位进位: 由于运算结果超出了位数由于运算结果超出了位数,最高有效位向最高有效位向 前的进位,这一位自然丢失,一般不表前的进位,这一位自然丢失,一般不表 示结果的对错。示结果的对错。溢出:溢出:表示结果超出了字长允许表示的范围,表示结果超出了字长允许表示的范围, 一般会造成结果出错。一般会造成结果出错。例:例: (64) 11000000 127 01111111 64 01000000 + 1 00000001 0 1 00000000 128 10000000 进位进位 溢出溢出 字符的表示字符的表示ASCII码码:用一个字节字节来表示一个字符,低7位 为字符的ASCII值,最高位一般用作 校验位。 例:例: A 41H a 61H 1 31H 换行换行 0AH 回车回车 0DH 空格空格 20H第第1章作业章作业 Page 14