1、1第 1 章 微机运算基础习题和思考题1. 请完成以下计算:17466D=(10101110.10101)B(AE. A8 )H10101110101.01011B( 1397.344)D(575.58)H4BCH(010010111100)B( )BCD2. 设字长为 8 位,X(2A) 16,当 X 分别为原码、补码、反码和无符号数的时候,其真值是多少?答:当 X 表示原码时,其真值为: 101010当 X 表示补码时,其真值为: 101010当 X 表示反码时,其真值为: 101010当 X 表示无符号数数时,其真值为: 001010103. 设字长为 8 位,用补码形式完成下列计算,要
2、求有运算结果并讨论是否发生溢出?12018 33379070 5084答:12018其补码形式分别为:(120) 补 01111000 (18) 补 0001001001111000 0001001010001010由于 Cs=0 ,C p=1,因此有溢出,结果错误3337其补码形式为:(33) 补 11011111 (37) 补 11011011110111111101101110111010由于 Cs=1, Cp=1,所以没有溢出,结果正确9070其补码形式为:(90) 补 10011100 (70) 补 10111010100111001011101001010110由于 Cs=1, C
3、p=0,所以有溢出,结果错误50842其补码形式为:(50) 补 00110010 (84) 补 01010100001100100101010010000110由于 Cs=0, Cp=1,所以有溢出,结果错误4. 请写出下列字符串的 ASCII 码值。My name is Zhang san.4D 79 6E 61 6D 65 69 73 5A 68 61 6E 67 73 61 6E 2E第 2 章 80X86 微机系统习题与思考题1. 微型计算机主要由哪些基本部件组成?各部件的主要功能是什么?答:微型计算机主要由输入设备、运算器、控制器、存储器和输出设备组成。各部件的功能分别是:1、输入
4、设备通过输入接口电路将程序和数据输入内存;2、运算器是进行算术运算和逻辑运算的部件,它是指令的执行部件;3、控制器是计算机的指挥中心,它负责对指令进行译码,产生出整个指令系统所需要的全部操作的控制信号,控制运算器、存储器、输入/输出接口等部件完成指令规定的操作; 4、存储器用来存放程序、原始操作数、运算的中间结果数据和最终结果数据; 5、输出设备是 CPU 通过相应的输出接口电路将程序运行的结果及程序、数据送到的设备;2. 微处理器的发展过程是什么?答:微型计算机的发展过程是:第一代(19461957)采用电子管为逻辑部件,以超声波汞延迟线、阴极射线管、磁芯和磁鼓等为存储手段;软件上采用机器语
5、言,后期采用汇编语言。第二代(19571965)采用晶体管为逻辑部件,用磁芯、磁盘作内存和外存;软件上广泛采用高级语言,并出现了早期的操作系统。第三代(19651971)采用中小规模集成电路为主要部件,以磁芯、磁盘作内存和外存;软件上广泛使用操作系统,产生了分时、实时等操作系统和计算机网络。第四代(1971至今)采用大规模集成电路(LSI) 、超大规模集成电路(VLSI)为主要部件,以半导体存储器和磁盘为内、外存储器;在软件方法上产生了结构化程序设计和面向对象程序设计的思想。3. 简述 80486 微处理器的基本结构。书 12 页4. 80486 微处理器的工作模式有几种?当 CS 内容为 1
6、000H,IP 内容为 7896H,求在实地址模式下的物理地址为多少?答:实模式和保护模式及虚拟 8086 模式。当 CS 内容为 1000H,IP 内容为 7896H,在实3地址模式下的物理地址为 17896H.5. 简述 EPROM 的工作原理。书 27 页。6. 总线有那几种类型?答:按照总线的传输类型可分为数据、地址、控制三类;按和 cpu 的距离可分为内部总线、系统总线和外部总线。7. 简述 ISA 与 EISA 总线的的区别。它们的局限性表现在哪里?书 34 页。8. PCI 局部总线有些什么特点?书 35 页9. 什么是 USB?它有什么特点?书 41 页10. IEEE 139
7、4 总线有哪些特点?它与 USB 总线的区别在哪里?书 41 页。11. 简述现场总线的特点。书 42 页。12. 当代计算发展的主要核心技术有哪些?当代计算机的主要核心技术有:CACHE 技术、流水线技术、VM 技术、RISC 技术、多内核技术第 3 章 80X86 指令系统习题与思考题1. 指出下列各指令中源操作数和目的操作数的寻址方式: MOV BX,WORD PTR2200H AAA JUM 2200H LES DI,2100H MOV BX+SI+8, BX解答 MOV BX, WORD PTR2200H源操作数:直接寻址;目的操作数:寄存器寻址 AAA源操作数:寄存器寻址 AL(也
8、称隐含寻址);目的操作数:寄存器寻址 JUM 2200H程序转移段内直接寻址方式 LES DI,2100H源操作数:直接寻址;目的操作数:寄存器寻址4 MOV BX+SI+8, BX源操作数:寄存器寻址;目的操作数:基址加变址寻址2. 若 AX=0ABCDH,BX=7F8FH,CF=1。 求分别执行 8086 CPU 指令 ADD AX,BX ADC AX,BX SBB AX,BX NEG AX AND AX,BX OR AX,BX XOR AX, BX IMUL BL后,AX 寄存器中的内容,并指出标志寄存器 SF,ZF,AF,PF,CF 及 OF 的状态。解答 AX=2B5CH, SZAP
9、CO=001110B AX=2B5DH, SZAPCO=001010B AX=2C3DH, SZAPCO=001001B AX=5433H, SZAPCO=001110B AX=2B8DH, SZAPCO=00X100B AX=FFCFH, SZAPCO=10X100B AX=D222H, SZAPCO=10X100B AX=3283H, SZAPCO=XXXX11B3. 若 AL=78H,BL=87H ,求执行指令ADD AL,BLDAA之后,AL?、标志 AF?、CF? 若执行指令 SUB AL,BL 与 DAS 后,AL?、标志 AF?、CF?解答 AL=65H, AF=1, CF=1。
10、 AL=91H, AF=0, CF=1。4. 指出下列指令中哪些是错误的,并指出错在何处? MOV DL,DX MOV ES,2000H SUB BX,SI ADD AX,BX+CX XCHG DS,2400H DEC 15H IN AL,DX OUT 300H,AX解答 错,DX 不能作为间接寻址的寄存器。 错,立即数不能直接送给段寄存器。 错,两个存储单元间内容不能直接相减。 错,CX 寄存器不能作为变址寄存器。 错,不允许段寄存器与存储单元内容进行交换 错,减 1 指令不能对段寄存器直接操作5 对 错,输出指令的地址若是 16 位,必须用 DX 间址。5. 下列程序段执行后 AX=?设数
11、据段有: TABLE DW 100,200,300,400ENTRY DW 3代码段 对 DS 初始化MOV BX,OFFSET TABLEMOV SI,ENTRYMOV AX,BX+SI执行后 AX=2C006. 将 AL 中的 8 位二进制数按倒序方式重新排列,即 AL 原来为 D7D6D0,倒序后AL=D0D1D7。参考答案MOV CX, 8L: SHL AL, 1RCR BL, 1LOOP LMOV AL, BL7.若起始地址偏移量为 2000H 的内存单元存放有 100 个 ASCII 码字符,现给这些字符添加奇偶校验位(bit7),使每个字符中“1”的个数为偶数,在顺序输出到地址为
12、 100H 的端口。解答MOV SI, 2000HMOV CX, 100MOV DX, 100HNEXT2: MOV AL, SI ;取字符串中字符送 ALAND AL, 0FFH ;改变标志位JPE NEXT1 ;“1”的个数为偶,bit7 不变OR AL, 80H ;“1”的个数为奇,bit7 变为 1NEXT1: OUT DX, ALINC SILOOPNEXT2MOV AH, 4CHINT 21H8. 若 SS=1000H,SP=2000H,AX=1234H,BX=5678H,FR=2115,试说明执行指令PUSH AXPUSH BX6PUSHFPOP CXPOP DX之后,SP=?
13、SS=? CX=? DX=? 并画图指出堆栈中各单元的内容。解答: SS=1000HSP=1FFEHCX=2115HDX=5678H栈中各单元内容如下所示:地址 RAM11FFAH 211511FFCH 567811FFEH 123412000H第 4 章 宏汇编语言习题与思考题1.画出以下变量在内存中存储的示意图。D1 DB A,123,09H, 45D2 DW A,CD,23H, 4567HD3 DD 1234H, 23456789H2.设计子程序分别完成以下功能:1)根据给定的参数值,判断该参数是偶数还是奇数。2)把给定参数值的高、低数据位互换。3.设计相应的宏完成以下功能:1)把给定的
14、参数按二进制显示。2)求两个参数的和,并按十进制形式显示。7第 5 章 汇编语言程序设计习题与思考题1. 设数据段中有字节型单元 NUMBER 和 FLAG,判断 NUMBER 与给定的 X 和 Y 的大小关系(XY,则置 FLAG1,若 NUMBERX,则置 FLAG=-1,否则置FLAG=0。解答:.486Data segmentNUMBER db ?FLAG db ?Data endsCode segmentAssume cs: Code, ds: DataBeg: mov ax,dataMov ds,axmov al, XMov bl, YCmp NUMBER, XJnc P1Mov
15、FLAG, 0FFHJmp exitP1: cmp NUMBER, YJa P2Mov FLAG, 00HJmp exitP2: mov FLAG, 01HExit: mov ah, 4chInt 21hCode endsEnd Beg2. 计算 123100,并把和保存在 SUM 单元中。.486DATA SEGMENT USE16TT DB 1SUM DW ?DATA ENDS8CODE SEGMENT USE16ASSUME CS:CODE,DS:DATABEG: MOV AX , DATAMOV DS, AXMOV CX, 100MOV AX, 0START: ADD AX, TTIN
16、C TTLOOP STARTMOV SUM, AXMOV AH, 4CHMOV 21HCODE ENDSEND BEG3. 对一个给定的 N 数据,用冒泡排序法进行排序。解答:.486Data segmentBuf db abcd18437hjLens equ $-bufCount db lensFlag db ?Data endsCode segmentAssume cs: code, ds: dataBeg: mov ax, dataMov ds, axAgain: dec countJz doneMov flag, 0Mov cx, countMov si, offset bufLast
17、: mov al, siMov ah, si+1Cmp ah, alJnc nextMov si, ahMv si+1, alMov flag, 19Next: inc siLoop lastCmp flag, 1Je againDone: mov buf+lens, $Mov ah, 9Mov dx, offset bufInt 21hMov ah, 4chInt 21hCode endsEnd Beg4. 由键盘输入任意的两个十进制数,然后转换成对应的压缩 BCD 码的形式在屏幕上显示。.486DATA SEGMENT USE16BCD DB ?BUF DB 3 DB ?DB 3DUP(?
18、)MESG1 DB PLEASE INPUT :,0DH,OAH,$MESG2 DB ERROR! NUMBER IS FROM 0 TO 9. PLEASE AGAIN!$ DATA ENDSCODE SEGMENT USE16ASSUME CS:CODE,DS:DATABEG: MOV AX , DATAMOV DS, AXL1: MOV DX, OFFSET MESG1MOV AH, 9 ;显示 MESG1INT 21H MOV AH, 0AHMOV DX, OFFSET BUFINT 21H ;输入字符串MOV AL, BUF+2CMP AL, 30HJC ERRORCMP AL, 3
19、AHJC NEXT ;判断第一个数输入是否符合要求10ERROR: MOV DX, OFFSET MESG2MOV AH, 9INT 21HJMP L1 ;输入错误提示重新输入NEXT: SUB AL, 30HSAL AL, 4 ;求出十位数字MOV BCD, ALMOV AL, BUF+3CMP AL, 30HJC ERRORCMP AL, 3AHJNC ERROR ;判断第二个数输入是否符合要求SUB AL, 30HOR BCD, ALMOV AH, 4CHINT 21HCODE ENDSEND BEG5. 由键盘输入两个十六进制数,转换成等值的十进制数后在屏幕上显示。CMPDISP MACRO NN ;用宏语句完成比较法二进制到十进制转换LOCAL LAST,NEXTMOV DL, 0LAST: CMP NUM, NNJC NEXTINC DLSUB NUM, NNJMP LASTNEXT: ADD DL, 30HMOV AH, 2INT 21HENDMDATA SEGMENT USE16NUM DB ?BUF DB 3DB ?DB 3DUP(?)DATA ENDSCODE SEGMENT USE16