第1章汇编语言基础知识〔习题1.1〕简述计算机系统的硬件组成及各部分作用。〔解答〕CPU:包括运算器、控制器和寄存器组。运算器执行所有的算术和逻辑运算;控制器负责把指指令逐条从存储器中取出,经译码分析后向机器发出各种控制命令,并正确完成程序所要求的功能;寄存器组为处理单元提供所需要的数据。存储器:是计算机的记忆部件,它用来存放程序以及程序中所涉及的数据。外部设备:实现人机交换和机间的通信。〔习题1.2〕明确下列概念或符号:主存和辅存,RAM和ROM,存储器地址和I/O端口,KB、MB、GB和TB〔解答〕主存又称内存是主存储器的简称,主存储器存放当前正在执行的程序和使用的数据,CPU可以直接存取,它由半导体存储器芯片构成其成本高、容量小、但速度快。辅存是辅助存储器的简称,辅存可用来长期保存大量程序和数据,CPU需要通过I/O接口访问,它由磁盘或光盘构成,其成本低、容量大,但速度慢。RAM是随机存取存储器的英语简写,由于CPU可以从RAM读信息,也可以向RAM写入信息,所以RAM也被称为读写存储器,RAM型半导体存储器可以按地址随机读写,但这类存储器在断电后不能保存信息;而ROM中的信息只能被读出,不能被修改,ROM型半导体通常只能被读出,但这类存储器断电后能保存信息。存储器由大量存储单元组成。为了区别每个单元,我们将它们编号,于是,每个存储单元就有了一个存储地址,I/O接口是由一组寄存器组成,为了区别它们,各个寄存器进行了编号,形成I/O地址,通常称做I/O端口。KB是千字节、MB是兆字节、GB是吉字节和TB是太字节,它们都是表示存储器存储单元的单位。〔习题1.3〕什么是汇编语言源程序、汇编程序、目标程序?〔解答〕用汇编语言书写的程序就称为汇编语言源程序;完成汇编工作的程序就是汇编程序;由汇编程序编译通过的程序就是目标程序。〔习题1.4〕汇编语言与高级语言相比有什么优缺点?〔解答〕汇编语言与高级语言相比的优点:由于汇编语言本质就是机器语言,它可以直接地、有效地控制计算机硬件,因而容易产生运行速度快,指令序列短小的高效目标程序,可以直接控制计算机硬件部件,可以编写在“时间”和“空间”两方面最有效的程序。汇编语言与高级语言相比的缺点:由于与处理器密切相关导致通用性差、可移植性差,汇编语言功能有限,又涉及寄存器、主存单元等硬件细节,编写汇编语言比较繁琐,调试起来也比较困难,编译程序产生的目标程序往往比较庞大、程序难以优化,运行速度慢。〔习题1.5〕将下列十六进制数转换为二进制和十进制表示(1)FFH(2)0H(3)5EH(4)EFH(5)2EH(6)10H(7)1FH(8)ABH〔解答〕(1)FFH11111111B255D(2)0H0B0D(3)5EH1011110B94D(4)EFH11101111B239D(5)2EH101110B46D(6)10H10000B16D(7)1FH11111B31D(8)ABH10101011B171D〔习题1.6〕将下列十进制数转换为BCD码表示(1)12(2)24(3)68(4)127(5)128(6)255(7)1234(8)2458〔解答〕(1)1200010010(2)2400100100(3)6801101000(4)127000100100111(5)128000100101000(6)255001001010101(7)12340001001000110100(8)24580010010001011000〔习题1.7〕将下列BCD码转换为十进制数(1)10010001(2)10001001(3)00110110(4)10010000(5)00001000(6)10010111(7)10000001(8)00000010〔解答〕(1)91(2)89(3)36(4)90(5)08(6)97(7)81(8)02〔习题1.8〕将下列十进制数分别用8位二进制数的原码、反码和补码表示(1)0(2)-127(3)127(4)-57(5)126(6)-126(7)-128(8)68〔解答〕(1)0+0000000000000000000000000-0100000001111111100000000(2)-127111111111000000010000001(3)127011111110111111101111111(4)-57101011111101000011010001(5)126011111100111111001111110(6)-126111111101000000110000010(7)-12810000000(8)68010001000100010001000100〔习题1.9〕完成下列二进制数的运算(1)1011+1001(2)1011-1001(3)1011×1001(4)10111000÷1001(5)1011∧1001(6)1011∨1001(7)~1011(8)1011?1001〔解答〕(1)1011+1001=10100(2)1011-1001=0010(3)1011×1001=1100011(4)10111000÷1001=10100,余数1000(5)1011∧1001=1001(6)1011∨1001=1011(7)~1011=0100(8)1011?1001=0010(?代表异或)〔习题1.10〕数码0~9、大写字母A~Z、小写字母a~z对应的ASCII码分别是多少?ASCII码为0dh、0ah对应的是什么字符?〔解答〕数码0~9:30H~39H大写字母A~Z:41H~5AH小写字母a~z:61H~7AHASCII码为0dh、0ah分别对应回车和换行控制字符。〔习题1.11〕计算机中有一个“01100001”编码,如果把它认为是无符号数,它是十进制什么数?如果认为它是BCD码,则表示什么数?又如果它是某个ASCII码,则代表哪个字符?〔解答〕十进制无符号数:01100001B=61H=97BCD码:61ASCII码:a〔习题1.12〕简述Intel80x86系列微处理器在指令集方面的发展。〔解答〕1978年Intel,正式推出了16位8086CPU,1979年Intel推出了准16位微处理器8088,随后,Intel推出了80186/80188,80186/80188指令系统比8086指令系统新增了若干条实用的指令,涉及堆栈操作、移位指令、过程指令和边界检测及乘法指令,1982年Intel推出80286CPU,80286指令系统包括全部80186指令及新增的保护指令15条,其中有些保护方式在实方式下也可以使用,1985年,Intel80x86推出微处理器地进入第三代80386CPU,80386指令系统在兼容原来16位指令系统的基础上,全面升级为32位,还新增了有关位操作、条件设置指令以及控制、调试和测试寄存器的传送指令等,1989年,Intel推出了80486CPU,80486将浮点处理单元FPU集成进来,还采用了精简指令集计算机技术RISC和指令流水线方式,还新增了用于多处理器和内部Cache操作的6条指令,1993年Intel制成了俗称586的微处理器,取名Pentium。Pentium仍为32位结构,地址总线为32位,对常用的简单指令用硬件实现,重新设计指令的微代码等,Pentium新增了一条8字节比较交换指令和一条处理器识别指令,以及4条系统专用指令,1996年推出了MMXPentium,新增了57条多媒休指令,1995年Intel推出PentiumPro新增了3条指令,1999年推出了PentiumⅢ新增了70条SSE指令,2000年推出的Pentium4新增了76条SSE2指令〔习题1.13〕什么是DOS和ROM-BIOS?〔解答〕DOS是DisketteOperatingsystem的缩写,意思是磁盘操作系统,DOS主要是面向磁盘的系统软件,说得简单些,就是人与机器的一座桥梁,是罩在机器硬件外面的一层“外壳”,是1981~1995年的个人电脑上使用的一种主要的操作系统。BIOS(BasicInput/OutputSystem)即基本输入输出系统,通常是固化在只读存储器(ROM)中,所以又称为ROM-BIOS。它直接对计算机系统中的输入、输出设备进行设备级、硬件级的控制,是连接软件程序和硬件设备之间的枢纽。ROM-BIOS是计算机系统中用来提供最低级、最直接的硬件控制的程序。〔习题1.14〕简述PC机最低1MB主存空间的使用情况。〔解答〕(1)基本RAM区(00000H—9FFFFH)该区共640KB,由DOS进行管理。在这个区域中操作系统要占用掉一部分低地址空间,其它则向用户程序开放。(2)保留区RAM(A0000H--BFFFFFH)该区为系统安排的“显示缓冲存储区”,共126KB,是显卡上的芯片提供支持,用于存放屏幕显示信息。但这部分地址空间实际上并没有全部使用。(3)扩展区ROM(C0000H--DFFFFH)该区128KB,由接口卡上的芯片提供支持,用于为系统不直接支持的外设安排设备驱动程序。用户固化的程序就可[安排在这一段,系统的会对它进行确认和连接。(4)系统区ROM(E0000H--FFFFFH)该区共128KB,由系统占用,它主要提供ROM--BIOS程序,基本输入输出程序BIOS,是操作系统的重要组成部分,主要用来驱动输入输出设备,也负责系统的上电检测,磁盘引导等初始化操作,在ROM--BIOS中还有CMOS微机设置程序以及使用的字符图符信息等内容。〔习题1.15〕罗列8086CPU的8个8位和16位通用寄存器,并说明各自的作用。〔解答〕(1)数据寄存器:AX称为累加器,使用频度最高,用于算术、逻辑运算以及与外设传送信息等;BX称为基址寄存器,常用做存放存储器地址;CX称为计数器,作为循环和串操作等指令中的隐含计数器;DX称为数据寄存器,常用来存放双字长数据的高16位,或存放外设端口地址。(2)指针及变址寄存器包括SI,DI,BP,SP,四个寄存器,常用于存储器寻址时提供地址。SI是源变址寄存器,DI是目的变址寄存器,一般与DS联用确定数据段和附加段中某一存储单元地址,在串指令中,SI与DS联用、DI和ES联用,分别寻址数据段和附加段;同时,在串指令中,SI和DI还都具有自动增量或减量的功能。SP,为堆栈指针寄存器,指示栈顶的偏移地址;BP为基地址指针寄存器,表示堆栈段中的基地址。SP与BP寄存器均可与SS段寄存器联合使用以确定堆栈段中的存储单元地址。〔习题1.16〕什么是标志,它有什么用途?状态标志和控制标志有什么区别?画出标志寄存器FLAGS,说明各个标志的位置和含义。〔解答〕标志用于反映指令执行结果或控制指令执行形式。它是汇编语言程序设计中必须特别注意的一个方面,状态用来记录运行的结果的状态信息,许多指令的执行都将相应地设置它,控制标志位可由程序根据需要用指令设置,用来控制处理器执行指令的方式。CF是进位标志;ZF是零标志;SF是符号标志;PF奇偶标志;OF溢出标志;AF辅助进位标志;DF方向标志;IF中断允许标志;TF陷阱标志。〔习题1.17〕举例说明CF和OF标志的差异。〔解答〕溢出标志OF和进位标志CF是两个意义不同的标志。进位标志表示无符号数运算结果是否超出范围,运算结果仍然正确;溢出标志表示有符号数运算结果是否超出范围,运算结果已经不正确。例1:3AH+7CH=B6H无符号数运算:58+124=182,范围内,无进位有符号数运算:58+124=182,范围外,有溢出例2:AAH+7CH=(1)26H无符号数运算:170+124=294,范围外,有进位有符号数运算:-86+124=28,范围内,无溢出〔习题1.18〕字和双字在存储器中如何存放,什么是“小端方式”?对字和双字存储单元,什么是它们的对齐地址?为什么要对齐地址?〔解答〕字或双字在存储器中占相邻的2个或4个存储单元;存放时,低字节存入低地址,高字节存入高地址;字或双字单元的地址用它的低地址来表示。80x86处理器采用的这种“低对低,高对高