微型计算机原理与接口技术(第5版)课后习题答案及问题墙
- 格式:doc
- 大小:4.50 MB
- 文档页数:57
《微型计算机原理与接口技术》课后答案第1章基础知识1.1 计算机中常用的计数制有哪些?解:二进制、八进制、十进制(BCD)、十六进制。
1.2 什么是机器码?什么是真值?解:把符号数值化的数码称为机器数或机器码,原来的数值叫做机器数的真值。
1.3 完成下列数制的转换。
微型计算机的基本工作原理汇编语言程序设计微型计算机接口技术建立微型计算机系统的整体概念,形成微机系统软硬件开发的初步能力。
解:(1)166,A6H(2)0.75(3)11111101.01B, FD.4H(4 ) 5B.AH, (10010001.011000100101)BCD1.4 8位和16位二进制数的原码、补码和反码可表示的数的范围分别是多少?解:原码(-127~+127)、(-32767~+32767)补码(-128~+127)、(-32768~+32767)反码(-127~+127)、(-32767~+32767)1.5 写出下列真值对应的原码和补码的形式。
(1)X= -1110011B(2)X= -71D(3)X= +1001001B解:(1)原码:11110011 补码:10001101(2)原码:11000111 补码:10111001(3)原码:01001001 补码:010010011.6 写出符号数10110101B的反码和补码。
解:11001010,110010111.7 已知X和Y的真值,求[X+Y]的补码。
(1)X=-1110111B Y=+1011010B(2)X=56D Y= -21D解:(1)11100011(2)001000111.8 已知X= -1101001B,Y= -1010110B,用补码求X-Y的值。
解:111011011.9 请写出下列字符的ASCII码。
4A3-!解:34H,41H,33H,3DH,21H1.10 若给字符4和9的ASCII码加奇校验,应是多少?解:34H,B9H1.11 上题中若加偶校验,结果如何?解:B4H,39H1.12 计算下列表达式。
微型计算机原理与接口技术(第5版)课后答案及问题墙第一章绪论{崔文韬问}:课后习题第一题,二进制数与十进制数转换。
{崔文韬答}:11001010B=202D,00111101B=61D,01001101B=77D,10100100B=164D。
{崔文韬问}:课后习题第二题,16进制数与十进制数转换。
{崔文韬答}:12CH=300D,0FFH=255,3A8DH=14989D,5BEH=1470D{崔文韬问}:课后习题第三题,十进制数转化为二进制数和16进制数。
{杨艺答}:25D=19H=00011001B,76D=4CH=01001100B,128D=100H=0000000100000000B,134D=106H=0000000100000110B{杨艺答}:128D=80H=10000000B,134D=86H=10000110B{崔文韬问}:课后习题第四题,写出10进制数的BCD码{杨艺答}:327D=(001100100111)BCD,1256D=(0001001101010110)BCD{杨艺答}:1256D=(0001001001010110)BCD{崔文韬问}:英文单词About的ASCII码{沙猛答}:3935H{王金鑫改}:41H,62H,6FH,75H,74H{崔文韬问}:数字95的ASCII码{王金鑫答}:39H,35H{崔文韬问}:课后习题第六题:10进制数的原码、补码、反码{杨艺答}:【+42】原=00101010B=【+42】反=【+42】补【-42】原=10101010B,【-42】反=11010101B,【-42】补=11010110B【+85】原=01010101B=【+85】反=【+85】补【-85】原=11010101B,【-85】反=10101010B,【-85】补=10101011B{崔文韬问}:机器语言或者机器码(Machine Code),汇编语言(Assemble Language),高级语言的定义{沙猛答}:机器码:计算机只认得二进制数码,计算机中的所有指令都必须用二进制表示,这种用二进制表示的指令称为机器码。
《微机原理与接口》课程习题及参考答案2012年秋季第一章习题(教材P29)作业11.1 微处理器、微型计算机和微型计算机系统三者之间有什么不同?【解】把CPU(运算器和控制器)集成在一个芯片上,即为微处理器。
微处理器加上部分存储器和外设(或外设接口)就构成了微型计算机。
微型计算机与管理、维护计算机硬件以及支持应用的软件相结合就形成微型计算机系统。
1.2 CPU在内部结构上由哪几部分组成?CPU应该具备哪些主要功能?【解】CPU主要由算术逻辑单元、指令寄存器、指令译码器、可编程逻辑阵列、寄存器组、标志寄存器等组成。
CPU主要功能是进行算术逻辑运算,以及控制计算机按照程序的规定自动运行。
1.3 微型计算机采用总线结构有什么优点?【解】采用总线结构,扩大了数据传送的灵活性,减少了连线;而且总线可以标准化,易于兼容和工业化生产。
1.4 数据总线和地址总线在结构上有什么不同之处?如果一个系统的数据和地址合用一组总线或者合用部分总线,那么要靠什么来区分地址和数据?【解】数据总线是双向的,地址总线是单向的。
采用数据和地址线复用,主要靠信号的时序来区分。
通常在读写数据时,在复用的总线上先输出地址信息,然后再传送数据。
第二章习题(教材P43)作业22.9 8086的基本程序执行寄存器是由哪些寄存器组成的?【解】8086的基本程序执行寄存器组成如下:⑴ 8个通用寄存器:可用于存放操作数和指针。
⑵ 4个段寄存器:保存段基值(或段选择子)。
⑶ 1个标志寄存器:保存状态位和控制标志位。
⑷ 1个指令指针寄存器:存放下一条要执行的指令的指针。
2.13 如何形成指令中的各种条件码?【解】指令中的条件码,即标志寄存器中的状态标志。
它们主要由算术和逻辑运算指令设置或清除。
也有设置和清除某些状态标志位的专用指令。
2.16 段寄存器CS=1200H,指令指针寄存器IP=FF00H,此时,指令的物理地址为多少?【解】指令的物理地址 = 1200H×16 + FF00H = 21F00H2.17 8086微处理器的执行部件有什么功能?由哪几部分组成?【解】8086微处理器的执行部件负责指令的执行。
《微机原理与接口》课程习题及参考答案2012年秋季第一章习题(教材P29)作业11.1 微处理器、微型计算机和微型计算机系统三者之间有什么不同?【解】把CPU(运算器和控制器)集成在一个芯片上,即为微处理器。
微处理器加上部分存储器和外设(或外设接口)就构成了微型计算机。
微型计算机与管理、维护计算机硬件以及支持应用的软件相结合就形成微型计算机系统。
1.2 CPU在内部结构上由哪几部分组成?CPU应该具备哪些主要功能?【解】CPU主要由算术逻辑单元、指令寄存器、指令译码器、可编程逻辑阵列、寄存器组、标志寄存器等组成。
CPU主要功能是进行算术逻辑运算,以及控制计算机按照程序的规定自动运行。
1.3 微型计算机采用总线结构有什么优点?【解】采用总线结构,扩大了数据传送的灵活性,减少了连线;而且总线可以标准化,易于兼容和工业化生产。
1.4 数据总线和地址总线在结构上有什么不同之处?如果一个系统的数据和地址合用一组总线或者合用部分总线,那么要靠什么来区分地址和数据?【解】数据总线是双向的,地址总线是单向的。
采用数据和地址线复用,主要靠信号的时序来区分。
通常在读写数据时,在复用的总线上先输出地址信息,然后再传送数据。
第二章习题(教材P43)作业22.9 8086的基本程序执行寄存器是由哪些寄存器组成的?【解】8086的基本程序执行寄存器组成如下:⑴ 8个通用寄存器:可用于存放操作数和指针。
⑵ 4个段寄存器:保存段基值(或段选择子)。
⑶ 1个标志寄存器:保存状态位和控制标志位。
⑷ 1个指令指针寄存器:存放下一条要执行的指令的指针。
2.13 如何形成指令中的各种条件码?【解】指令中的条件码,即标志寄存器中的状态标志。
它们主要由算术和逻辑运算指令设置或清除。
也有设置和清除某些状态标志位的专用指令。
2.16 段寄存器CS=1200H,指令指针寄存器IP=FF00H,此时,指令的物理地址为多少?【解】指令的物理地址 = 1200H×16 + FF00H = 21F00H2.17 8086微处理器的执行部件有什么功能?由哪几部分组成?【解】8086微处理器的执行部件负责指令的执行。
第一章解:五代,详细见书解:微型计算机:以大规模、超大规模集成电路为主要部件,以集成了计算机主要部件——控制器和运算器的微处理器为核心,所构造出的计算机系统 ;PC机:PCPersonal Computer机就是面向个人单独使用的一类微机 ;单片机:用于控制的微处理器芯片,内部除CPU外还集成了计算机的其他一些主要部件,如:ROM、RAM、定时器、并行接口、串行接口,有的芯片还集成了A/D、D/A转换电路等;数字信号处理器DSP:主要面向大流量数字信号的实时处理,在宿主系统中充当数据处理中心,在网络通信、多媒体应用等领域正得到越来越多的应用解:微机主要有存储器、I/O设备和I/O接口、CPU、系统总线、操作系统和应用软件组成,各部分功能如下:CPU:统一协调和控制系统中的各个部件系统总线:传送信息存储器:存放程序和数据I/O设备:实现微机的输入输出功能I/O接口:I/O设备与CPU的桥梁操作系统:管理系统所有的软硬件资源解:系统总线:传递信息的一组公用导线,CPU通过它们与存储器和I/O设备进行信息交换 ;好处:组态灵活、扩展方便三组信号线:数据总线、地址总线和控制总线 ;其使用特点是:在某一时刻,只能由一个总线主控设备来控制系统总线,只能有一个发送者向总线发送信号;但可以有多个设备从总线上同时获得信号;解:1用于数值计算、数据处理及信息管理方向;采用通用微机,要求有较快的工作速度、较高的运算精度、较大的内存容量和较完备的输入输出设备,为用户提供方便友好的操作界面和简便快捷的维护、扩充手段;2用于过程控制及嵌人应用方向;采用控制类微机,要求能抵抗各种干扰、适应现场的恶劣环境、确保长时间稳定地工作,要求其实时性要好、强调其体积要小、便携式应用强调其省电;解:解:I/O通道:位于CPU和设备控制器之间,其目的是承担一些原来由CPU处理的I/O任务,从而把CPU 从繁杂的I/O任务中解脱出来;由10根信号线组成A9-A0;解:BIOS:基本输入输出系统;主要功能:用来驱动和管理诸如键盘、显示器、打印机、磁盘、时钟、串行通信接口等基本的输入输出设备解:基本RAM区:640KB保留RAM区:128KB扩展ROM区:128KB基本ROM区:128KB解:1、数—用来直接表征量的大小,包括:定点数、浮点数;2、码—用来指代某个事物或事物的某种状态属性,包括:二进制、八进制、十进制、十六进制;区别:使用场合不同,详见P16.解:123解:原码反码补码+37 00100101/25H 00100101/25H 00100101/25H解:解:无符号数:70D补码有符号数:70DBCD码:46DASCII:F解:1、相加后若出现和大于9,则将和减去10后再向高位进12、若出现组间进位,则将低位加6解:详见课本16页;解:C3 40 20 00D:44Hd:64HCR:0DHLF:0AH0:30HSP:20HNUL:00H解:国标码:36 50H机内码:B6 B0H第3章解:1完整的汇编语言源程序由段组成2一个汇编语言源程序可以包含若干个代码段、数据段、附加段或堆栈段,段与段之间的顺序可随意排列3需独立运行的程序必须包含一个代码段,并指示程序执行的起始点,一个程序只有一个起始点4所有的可执行性语句必须位于某一个代码段内,说明性语句可根据需要位于任一段内5通常,程序还需要一个堆栈段开始位置:用标号指明返回DOS:利用DOS功能调用的4CH子功能来实现汇编停止:执行到一条END伪指令时,停止汇编解:段定位、段组合和段类型;解:stack segment stackdb 10240stack endsdata segmentstring db 'Hello,Assembly',0dH,0aH,‘$’data endscode segment 'code'assume cs:code,ds:data,ss:stackstart: mov dx,offset stringmov ah,9int 21hcode endsend start解:1. EXE程序程序可以有多个代码段和多个数据段,程序长度可以超过64KB通常生成EXE结构的可执行程序2. COM程序只有一个逻辑段,程序长度不超过64KB需要满足一定条件才能生成COM结构的可执行程序MASM 需要采用TINY模式解:符号定义伪指令有“等价EQU”和“等号=”:符号名 EQU 数值表达式符号名 EQU <字符串>符号名=数值表达式EQU用于数值等价时不能重复定义符号名,但“=”允许有重复赋值;例如:X= 7 ;等效于:X equ 7X= X+5 ;“X EQU X+5”是错误的解:1 al=67h2 ax=133h,dx=4h3 ax=0230h4 al=41h4 ax=7654h解:my1b db 'Personal Computer'my2b db 20my3b db 14hmy4b db 00010100bmy5w dw 20 dupmy6c = 100my7c = <'Personal Computer'>解:利用定位伪指令控制,如org,even,align解:包括逻辑地址和类型两种属性;解:;数据段org 100hvarw dw 1234h , 5678hvarb db 3 , 4buff dd 10 dupmess db 'Hello';代码段mov ax , offset varb + offset messmov ax , type buff + type mess + type vard mov ax , sizeof varw+ sizeof buff+ sizeof messmov ax , lengthof varw+ lengthof vard解:1 1000超过一个字节所能表达的最大整数2SI应为偶数3两个内存单元不能直接运算4应改为al+15条件转移指令后面应接标号,而不是变量解:mov ah,1 ;只允许输入小写字母int 21hsub al,20h ;转换为大写字母mov dl,almov ah,2int 21h ;显示解:mov bx,offset LEDtablemov al,lednumxlat解:mov ax, bufXcmp ax, bufYjae donemov ax, bufYdone: mov bufZ, ax解:.model small.stack.databufX dw -7signX db.code.startupcmp bufX,0 ;test bufX,80hjl next ;jnz nextmov signX,0jmp donenext: mov signX,-1done: .exit 0end解:mov dl,’2’mov ax,bufXcmp ax,bufYje next1dec dlnext1: cmp ax,bufZje next2dec dlnext2: mov ah,2int 21h解:;代码段mov al,numbermov bx,0 ;BX←记录为1的位数restart: cmp al,0 ;AL=0结束jz doneagain: shr al,1 ;最低位右移进入CFjc next ;为1,转移inc bx ;不为1,继续jmp againnext: push axpush bxshl bx,1 ;位数乘以2偏移地址要用2个字节单元jmp addrsbx ;间接转移:IP←table+BX;以下是各个处理程序段fun0: mov dl,'0'jmp dispfun1: mov dl,'1'jmp dispfun2: mov dl,'2'jmp dispfun3: mov dl,'3'jmp dispfun4: mov dl,'4'jmp dispfun5: mov dl,'5'jmp dispfun6: mov dl,'6'jmp dispfun7: mov dl,'7'jmp disp;disp: mov ah,2 ;显示一个字符int 21hpop bxpop axjmp restartdone: …编制程序完成12H、45H、0F3H、6AH、20H、0FEH、90H、0C8H、57H和34H等10个字节数据之和,并将结果存入字节变量SUM中不考虑溢出和进位;;.model small.stack.datab_data db 12h,45h,0f3h,6ah,20h,0feh,90h,0c8h,57h,34h ;原始数据num equ 10 ;数据个数sum db ;预留结果单元.code.startupxor si, si ;位移量清零xor al, al ;取第一个数mov cx, num ;累加次数again: add al, b_datasi ;累加inc si ;指向下一个数loop again ;如未完,继续累加mov sum, al ;完了,存结果.exit 0end求主存0040h:0开始的一个64KB物理段中共有多少个空格;.model small.codestart: mov ax,0040h ;送段地址mov ds, axmov si, 0 ;偏移地址mov cx, si ;计数循环次数xor ax, ax ;空格计数器清零again: cmp byte ptr si, 20h ;与空格的ASCII码比较jne next ;不是空格,转inc ax ;是空格,空格数加1next: inc si ;修改地址指针loop again ;cx=cx-1,如cx=0 退出循环.exit 0end start编写计算100个16位正整数之和的程序;如果和不超过16位字的范围65535,则保存其和到wordsum,如超过则显示‘overflow’;答:;数据段count equ 100parray dw count dup ;假设有100个数据wordsum dw 0msg db ‘overflow’,’$’;代码段mov cx,countmov ax,0mov bx,offset parrayagain: add ax,bxjnc nextmov dx,offset msgmov ah,9int 21h ;显示溢出信息jmp done ;然后,跳出循环体next: add bx,2loop againmov wordsum,axdone: …编程把—个16位无符号二进制数转换成为用8421BCD码表示的5位十进制数;转换算法可以是:用二进制数除以10000,商为“万位”,再用余数除以1000,得到“千位”;依次用余数除以l00、10和l,得到“百位”、“十位”和“个位”; ;.model small.stack 256.dataarray dw ;源字数据dbcd db 5 dup ;五位bcd结果,高对高低对低.code.startupmov dx, array ;取源数据余数mov bx, 10000 ;除数mov cx, 10 ;除数系数mov si, 4 ;目的数据高位位移量again: mov ax, dx ;中存放被除数mov dx, 0div bx ;除于bx,商ax,余数dxmov dbcdsi, al ;商<10,存结果push dx ;暂存余数mov ax, bx ;除数除于10mov dx,0div cx ;除于cx,商ax、余数0存在dxmov bx, ax ;bx是除数pop dxdec si ;目的数据位移量减1jnz againmov dbcd, dl ;存个位数 < 10.exit 0end解:1汇编语言中,子程序要用一对过程伪指令PROC和ENDP声明,格式如下:过程名PROC NEAR|FAR……;过程体过程名ENDP2保护用到的寄存器内容,以便子程序返回时进行相应的恢复;3改错:crazy procpish bxpush cxxor ax,axxor dx,dxagain:add a,bxadc dx,0inc bxinc bxloop againpop cxpop bx解不需调用HTOASC子程序:again: mov ah,1int 21hcmp al,1bh ;ESC的ASCII码是1bhje donemov dl,almov ah,2int 21h ;是大写字母则转换为小写字母jmp againdone: …解答:asctob procpush cxand dh,0fh ;先转换十位数shl dh,1 ;十位数乘以10采用移位指令mov ch,dhshl dh,1shl dh,1add dh,chand dl,0fh ;转换个位数add dh,dl ;十位数加个位数mov al,dh ;设置出口参数pop cxretasctob endp解:DIPASC proc ;入口参数:AL=要显示的一个16进制数push cxpush dxpush axmov cl,4 ;转换高位shr al,clcall HTOASCmov dl,al ;显示mov ah,2int 21hpop ax ;转换低位call HTOASCmov dl,al ;显示mov ah,2int 21hmov dl,’H’;显示一个字母“H”mov ah,2int 21hpop dxpop cxretDIPASC endpHTOASC proc ;将AL低4位表达的一位16进制数转换为ASCII码and al,0fhcmp al,9jbe htoasc1add al,37h ;是0AH~0FH,加37H转换为ASCII码ret ;子程序返回htoasc1: add al,30h ;是0~9,加30H转换为ASCII码ret ;子程序返回HTOASC endp解:lucase procpush bxmov bx,offset stringcmp al,0je case0cmp al,1jz case1cmp al,2jz case2jmp donecase0: cmp byte ptr bx,0je donecmp byte ptr bx,’A’jb next0cmp byte ptr bx,’Z’ja next0add byte ptr bx,20hnext0: inc bxjmp case0case1: cmp byte ptr bx,0je donecmp byte ptr bx,’a’jb next1cmp byte ptr bx,’z’ja next1sub byte ptr bx,20hnext1: inc bxjmp case1case2: cmp byte ptr bx,0je donecmp byte ptr bx,’A’jb next2cmp byte ptr bx,’Z’ja next20add byte ptr bx,20hjmp next2next20: cmp byte ptr bx,’a’jb next2cmp byte ptr bx,’z’ja next2sub byte ptr bx,20hnext2: inc bxjmp case2done: pop bxretlucase endp解:1用寄存器传递参数:最简单和常用的参数传递方法是通过寄存器,只要把参数存于约定的寄存器中就可以了由于通用寄存器个数有限,这种方法对少量数据可以直接传递数值,而对大量数据只能传递地址采用寄存器传递参数,注意带有出口参数的寄存器不能保护和恢复,带有入口参数的寄存器可以保护、也可以不保护,但最好能够保持一致2用共享变量传递参数子程序和主程序使用同一个变量名存取数据就是利用共享变量全局变量进行参数传递如果变量定义和使用不在同一个源程序中,需要利用PUBLIC、EXTREN声明如果主程序还要利用原来的变量值,则需要保护和恢复利用共享变量传递参数,子程序的通用性较差,但特别适合在多个程序段间、尤其在不同的程序模块间传递数据3用堆栈传递参数参数传递还可以通过堆栈这个临时存储区;主程序将入口参数压入堆栈,子程序从堆栈中取出参数;子程序将出口参数压入堆栈,主程序弹出堆栈取得它们采用堆栈传递参数是程式化的,它是编译程序处理参数传递、以及汇编语言与高级语言混合编程时的常规方法解:方法:主程序将入口参数压入堆栈,子程序从堆栈中取出参数;子程序将出口参数压入堆栈,主程序弹出堆栈取得它们注意:压栈与弹栈必须要一一对应;解:方法1:neg32 proc ;入口参数:=32位有符号数neg ax ;实现0-功能neg dxsbb dx,0 ;这条指令也可以用dec dx代替retneg32 endp ;出口参数:=32位有符号数的补码方法2:neg32 proc ;入口参数:=32位有符号数not ax ;实现求反加1not dxadd ax,1adc dx,0retneg32 endp ;出口参数:=32位有符号数的补码解:;数据段array db 12h,25h,0f0h,0a3h,3,68h,71h,0cah,0ffh,90h ;数组count equ $-array ;数组元素个数result db ;校验和;代码段mov bx,offset array ;BX←数组的偏移地址mov cx,count ;CX←数组的元素个数call checksum ;调用求和过程mov result,al ;处理出口参数mov ax,4c00hint 21h;计算字节校验和的通用过程;入口参数:DS:BX=数组的段地址:偏移地址,CX=元素个数;出口参数:AL=校验和;说明:除AX/BX/CX外,不影响其他寄存器checksum procxor al,al ;累加器清0sum: add al,bx ;求和inc bx ;指向下一个字节loop sumretchecksum endpend解:⑴.model small.stack.datawdata dw 34abh.code.startupmov ax,wdatacall dispa.exit 0;dispa procpush cxpush dxmov cl,4mov dl,ahshr dl,clcall dldispmov dl,ahand dl,0fhcall dldispmov dl,alshr dl,clcall dldispmov dl,aland dl,0fhcall dldisppop dxpop cxretdispa endp;dldisp procpush axor dl,30hcmp dl,39hjbe dldisp1add dl,7dldisp1: mov ah,2int 21hpop axretdldisp endpend⑵.model small.stack.datawdata dw 34abhwordtemp dw.code.startupmov ax,wdatamov wordtemp,axcall dispa.exit 0;dispa procpush cxpush dxmov cl,4mov dl,byte ptr wordtemp+1shr dl,clcall dldispmov dl,byte ptr wordtemp+1and dl,0fhcall dldispmov dl,byte ptr wordtempshr dl,clcall dldispmov dl,byte ptr wordtempand dl,0fhcall dldisppop dxpop cxretdispa endp;dldisp procpush axor dl,30hcmp dl,39hjbe dldisp1add dl,7dldisp1: mov ah,2int 21hpop axretdldisp endpend⑶.model small.stack.datawdata dw 34abh.code.startuppush wdatacall dispapop ax ;add sp,2.exit 0;dispa procpush bpmov bp,sppush axpush cxpush dxmov ax,bp+4mov cl,4mov dl,ahshr dl,clcall dldispmov dl,ahand dl,0fhcall dldispmov dl,alshr dl,clcall dldispmov dl,aland dl,0fhcall dldisppop dxpop cxpop axpop bpretdispa endp;dldisp procpush axor dl,30hcmp dl,39hjbe dldisp1add dl,7dldisp1: mov ah,2int 21hpop axretdldisp endpend解:如果利用共享变量传递函数,且变量定义和使用不在同一个源程序中,需要利用PUBLIC、EXTERN 声明;解:1宏定义由一对宏汇编伪指令MACRO和ENDM来完成,格式如下:宏名MACRO 形参表……;宏定义体ENDM宏定义之后就可以使用它,即宏调用:宏名实参表2宏调用的格式同一般指令一样:在使用宏指令的位置写下宏名,后跟实体参数;如果有多个参数,应按形参顺序填入实参,也用逗号分隔3宏展开:在汇编时,宏指令被汇编程序用对应的代码序列替代,这就是宏展开宏展开的具体过程是:当汇编程序扫描源程序遇到已有定义的宏调用时,即用相应的宏定义体完全替代源程序的宏指令,同时用位置匹配的实参对形参进行取代解:宏调用的参数通过形参、实参结合实现传递,简捷直观、灵活多变;宏汇编的一大特色是它的参数;宏定义时既可以无参数,也可以有一个或多个参数;宏调用时实参的形式也非常灵活,可以是常数、变量、存储单元、指令操作码或它们的一部分,也可以是表达式;只要宏展开后符合汇编语言的语法规则即可;解:宏:仅是源程序级的简化:宏调用在汇编时进行程序语句的展开,不需要返回;不减小目标程序,执行速度没有改变通过形参、实参结合实现参数传递,简捷直观、灵活多变子程序:还是目标程序级的简化:子程序调用在执行时由CALL指令转向、RET指令返回;形成的目标代码较短,执行速度减慢需要利用寄存器、存储单元或堆栈等传递参数选择:宏与子程序具有各自的特点,程序员应该根据具体问题选择使用那种方法;通常,当程序段较短或要求较快执行时,应选用宏;当程序段较长或为减小目标代码时,要选用子程序编写一个宏指令move doprnd,soprnd,它实现任意寻址方式的字量源操作数soprnd送到目的操作数doprnd,包括存储单元到存储单元的传送功能;答:move macro doprnd,soprndmov ax,soprndmov doprnd,axendm定义一个宏logical,用它代表4条逻辑运算指令:and/or/xor/test;注意需要利用3个形式参数,并给出一个宏调用以及对应宏展开的例子;答:logical macro lcode,dopd,sopdlcode dopd,sopdendm例如,如果使用“and ax,bx”指令,可以利用该宏定义,写出宏指令如下:logical and,ax,bx解:utol macrolocal nextcmp al,’A’;小于“A”不转换jb nextcmp al,’Z’;大于“A”不转换ja nextadd al,20h ;是大写字母则转换为小写字母next:endm定义一个宏movestr strn,dstr,sstr,它将strn个字符从一个字符区sstr传送到另一个字符区dstr解:假设它们都在数据段movestr macro strn,dstr,sstrmov cx,dsmov es,cxmov cx,strnmov di,offset dstrmov si,offset sstrcldrep movsb ;;重复传送ES:DI←DS:SIendm第五章解:主存的作用:保存正在使用的、处于活动状态的程序和数据;辅存的作用:长期保存程序文件和数据文件,在需要时将这些文件调入RAM内存并激活使用;cache的作用:提高对存储器的访问速度;虚拟存储:由容量较小的主存和容量较大的辅存构成,其目标是扩大程序员眼中的主存容量;区别:通过存储器访问指令用户可对主存进行随机访问;用户利用操作系统提供的用户命令和功能调用对辅存进行访问;在半导体存储器中,RAM指的是随机存取存储器 ,他可读可写,但断电后信息一般会丢失;而ROM指的是只读存储器 ,正常工作时只能从中读取信息,但断电后信息不会丢失 ;以EPROM芯片2764为例,其存储容量为8K×8位,共有 8 条数据线和 13 条地址线;用它组成64KB的ROM存储区共需 8 片2764芯片; 解:双译码方式使得地址译码器的输出线的数目大为减少,使得芯片设计得时候复杂度就低了;地址线A9~A4根数据线I/O4~I/O1片选CS读写WE解:假想的RAM有12根地址线、4根数据线片选端CS或CE:有效时,可以对该芯片进行读写操作,通过对系统高位地址线的译码来选中各个存储芯片输出OE:控制读操作;有效时,芯片内数据输出,该控制端对应系统的读控制线MEMRMRDC写WE:控制写操作;有效时,数据进入芯片中,该控制端对应系统的写控制线MEMWMWTC解:位片结构:每个存储单元具有一个唯一的地址,可存储1位;4116字片结构:每个存储单元具有一个唯一的地址,可存储多位;2114解:组成单元速度集成度应用SRAM 触发器快低小容量系统DRAM 极间电容慢高大容量系统NVRAM 带微型电池慢低小容量非易失掩膜ROM:信息制作在芯片中,不可更改PROM:允许一次编程,此后不可更改EPROM:用紫外光擦除,擦除后可编程;并允许用户多次擦除和编程EEPROME2PROM:采用加电方法在线进行擦除和编程,也可多次擦写Flash Memory闪存:能够快速擦写的EEPROM,但只能按块Block擦除解:位扩充——存储器芯片数据位数小于主机数据线数时,利用多个存储器芯片在数据“位”方向的扩充;地址扩充字扩充——当一个存储器芯片不能满足系统存储容量时,利用多个存储器芯片在“地址”方向的扩充组成32KB存储空间,用SRAM 21141K×4需要64个芯片;组成32KB存储空间,用DRAM 411616K×1需要16个芯片;它们都需要进行位扩充和地址扩充解:片选信号说明该存储器芯片是否被选中正常工作,设置它可以比较方便地实现多个存储器芯片组成大容量的存储空间存储器片选信号通常与CPU地址总线的高位地址线相关联,可以采用“全译码”、“部分译码”、“线选译码”方式采用全译码方式可以避免地址重复采用部分或线选译码可以节省译码硬件解:24=16解:解:解:解:解:动态随机存取存储器 DRAM 的存储单元电路动态存储单元是由 MOS 管的栅极电容 C 和门控管组成的;数据以电荷的形式存储在栅极电容上,电容上的电压高表示存储数据 1 ;电容没有储存电荷,电压为 0 ,表明存储数据 0 ;因存在漏电,使电容存储的信息不能长久保持,为防止信息丢失,就必须定时地给电容补充电荷,这种操作称为“ 刷新” 由于要不断地刷新,所以称为动态存储;方法:采用“仅行地址有效”方法刷新;刷新周期:15μs刷新次数:128解:4 256KB A19-A16 4解:访问的局部性原理:在一个较短的时间间隔内,由程序产生的地址往往集中在存储器逻辑地址空间的很小范围内;指令地址的分布本来就是连续的,再加上循环程序段和子程序段要重复执行多次;因此,对这些地址的访问就自然地具有时间上集中分布的倾向;数据分布的这种集中倾向不如指令明显,但对数组的存储和访问以及工作单元的选择都可以使存储器地址相对集中;这种对局部范围的存储器地址频繁访问,而对此范围以外的地址则访问甚少的现象,就称为程序访问的局部性;cache的作用:提高对存储器的访问速度;虚拟存储:其目标是扩大程序员眼中的主存容量;第七章解:总线:指可以由多个信息处理单元所共享的信息通道;使用特点:⑴在某一时刻,只能由一个主设备控制总线,其他主设备此时可作为从设备出现⑵在某一时刻,只能有一个设备向总线上发送数据,但可以有多个设备从总线上接收数据在各种微机总线中,根据总线连接对象的不同可将它们分为以下几类,它们是:片内总线、芯片总线、板级总线、设备总线和互连总线_;例如,ISA总线属于板级总线,USB总线属于设备总线,I2C总线属于芯片总线;总线中除电源和地线外的信号线,也可按传输信息的不同分为以下3类,即:数据总线、地址总线、控制总线 ;解:分时复用就是一个引脚在不同的时刻具有两个甚至多个作用总线复用的目的是为了减少对外引脚个数在访问存储器或外设的总线操作周期中,这些引脚在第一个时钟周期输出存储器或I/O端口的低8位地址A7 ~ A0,其他时间用于传送8位数据D7 ~ D0 解:并行总线:多维数据通过多根信号线同时进行传递;并行同步传输、并行异步传输见P174;解:见P174.解:总线的性能指标包括:总线宽度、标准传输、时钟同步/异步、总线复用、信号线数、总线控制方式总线宽度:它是指数据总线的根数, 用bit位表示,如8位、16位、32位、64位;解:D0~D7:8位双向数据总线A0~A19:20位输出地址总线ALE:地址锁存允许,每个CPU 总线周期有效IOR:I/O读,输出IOW:I/O写,输出IO CH RDY:I/O通道准备好,输入第九章解:软件延时、不可编程的硬件定时、可编程的硬件定时解:CLK时钟输入信号——在计数过程中,此引脚上每输入一个时钟信号下降沿,计数器的计数值减1GATE门控输入信号——控制计数器工作,可分成电平控制和上升沿控制两种类型OUT计数器输出信号——当一次计数过程结束计数值减为0,OUT引脚上将产生一个输出信号解:8253每个通道有 6 种工作方式可供选择;若设定某通道为方式0后,其输出引脚为低电平;当写入计数初值并进入减1计数器后通道开始计数, CLK 信号端每来一个脉冲减1计数器就减1;当计数器减为0 ,则输出引脚输出高电平,表示计数结束;8253的CLK0接的时钟,欲使OUT0产生频率为300KHz的方波信号,则8253的计数值应为 5=÷300KHz ,应选用的工作方式是 3解:1 mov al,50hmov dx,207hout dx,almov al,128 ;80hmov dx,205hout dx,al2 mov al,33hmov dx,207hout dx,almov ax,3000h ;不是3000mov dx,204hout dx,almov al,ahout dx,al3 mov al,0b4hmov dx,207hout dx,almov al,02f0hmov dx,206hout dx,almov al,ahout dx,al解:mov al,33hout 0fbh,al ;写入计数器0地址:0fbhmov al,80h ;out 0f8h,al ;写入低字节计数初值mov al,50hout 0f8h,al ;写入高字节计数初值作用:计数器0的计数初值为5080h解计数器0——每隔55ms产生一个IRQ0中断请求计数器1——每隔15μs产生一个DRAM刷新请求计数器2——控制扬声器音调解101个下降沿,还可以采用方式4GATE0接外部启动计数器的控制信号,可以选用方式1或方式5 mov dx,203hmov al,12h ;方式5为1ahout dx,almov dx,200hmov al,64hout dx,al解:计数器0的计数值:5M/1K=5000=1388H方式控制字:00100101=25H、2DH、35H、3DH十进制计数00100100=24H、2CH、34H、3CH二进制计数计数器1的计数值:1000方式控制字:01101001=69H、79H十进制计数 01101000=68H、78H二进制计数MOV DX,0FFF3HMOV AL,25H ;通道0,只写高字节,方式2,十进制OUT DX,ALMOV DX, 0FFF0HMOV AL,50H ;计数初值5000OUT DX,ALMOV DX,0FFF3HMOV AL,69H ;通道1,方式4OUT DX,ALMOV DX, 0FFF1HMOV AL,10H ;计数初值1000OUT DX,AL解:stack segment stackdw 1024 dupstack endsdata segmentfreq dw 8,,,,,,,,data endscode segment 'code'assume cs:code, ds:data,ss:stack start: mov ax,datamov ds,axagain:mov ah,01hin 21hcmp al,1BHjz nextcmp al,31Hjb next1cmp al,38Hja next1and al,0fhmov ah,00hmov si,axmov bx,offset freqmov ax,BX+SIcall speakercall speakonjmp againnext1: call speakoffjmp againnext: mov ax,4c00hint 21hspeaker procpush axmov al,0b6hout 43h,alpop axout 42h,almov al,ahout 42h,alretspeaker endp speakon procpush axin al,61hor al,03hout 61h,alpop axretspeakon endp speakoff procpush axin al,61hand al,0fchout 61h,alpop axretspeakoff endpcode endsend starts 解:1 f 1162f。
6、[+42]原=00101010B=[+42]反=[+42]补[-42]原=10101010B[-42]反=11010101B[-42]补=11010110B[+85]原=01010101B=[+85]反=[+85]补[-85]原=11010101B[-85]反=10101010B[-85]补=10101011B10、微型计算机基本结构框图微处理器通过一组总线(Bus)与存储器和I/O接口相连,根据指令的控制,选中并控制它们。
微处理器的工作:控制它与存储器或I/O设备间的数据交换;进行算术和逻辑运算等操作;判定和控制程序流向。
存储器用来存放数据和指令,其内容以二进制表示。
每个单元可存8位(1字节)二进制信息。
输入——将原始数据和程序传送到计算机。
输出——将计算机处理好的数据以各种形式(数字、字母、文字、图形、图像和声音等)送到外部。
接口电路是主机和外设间的桥梁,提供数据缓冲驱动、信号电平转换、信息转换、地址译码、定时控制等各种功能。
总线:从CPU和各I/O接口芯片的内部各功能电路的连接,到计算机系统内部的各部件间的数据传送和通信,乃至计算机主板与适配器卡的连接,以及计算机与外部设备间的连接,都要通过总线(Bus)来实现。
13、8086有20根地址线A19~A0,最大可寻址220=1048576字节单元,即1MB;80386有32根地址线,可寻址232=4GB。
8086有16根数据线,80386有32根数据线。
1、8086外部有16根数据总线,可并行传送16位数据;具有20根地址总线,能直接寻址220=1MB的内存空间;用低16位地址线访问I/O端口,可访问216=64K个I/O端口。
另外,8088只有8根数据总线2、8086 CPU由两部分组成:总线接口单元(Bus Interface Unit,BIU)BIU负责CPU与内存和I/O端口间的数据交换:BIU先从指定内存单元中取出指令,送到指令队列中排队,等待执行。
第五章1. 静态RAM 与动态RAM 有何区别?答:(1)静态RAM 内存储的信息只要电源存在就能一直保持,而动态RAM 的信息需要定时刷新才能保持(2)静态RAM 的集成度比较低,运行速度快,而动态RAM 的集成度高,运行相对较慢(3)静态RAM 造价成本高,动态RAM 价格便宜2. ROM 、PROM 、EPROM 、EEPROM 在功能上各有何特点?答:ROM 是只读存储器,根据写入方式的不同可以分为四类:掩膜型ROM 、PROM 、EPROM 和EEPROM 。
掩膜型ROM 中信息是厂家根据用户给定的程序或数据,对芯片图形掩膜进行两次光刻而写入的,用户对这类芯片无法进行任何修改。
PROM 出厂时,里面没有信息,用户采用一些设备可以将内容写入PROM ,一旦写入,就不能再改变了,即只允许编程一次。
EPROM 可编程固化程序,且在程序固化后可通过紫外光照擦除,以便重新固化新数据。
EEPROM 可编程固化程序,并可利用电压来擦除芯片内容,以重新编程固化新数据。
3. DRAM 的CAS 和RAS 输入的用途是什么? 答:CAS 为列地址选通信号,用于指示地址总线上的有效数据为列地址;RA 行地址选通信号,用于指示地址总线上的有效数据为列地址。
S 为4. 什么是Cache ?作用是什么?它处在微处理机中的什么位置?答:Cache 也称为高速缓存,是介于主存和CPU 之间的高速小容量存储器。
为了减少CPU 与内存之间的速度差异,提高系统性能,在慢速的DRAM 和快速CPU 之间插入一速度较快、容量较小的SRAM ,起到缓冲作用,使CPU 既可以以较快速度存取SRAM 中的数据,又不使系统成本上升过高,这就是Cache 的作用。
Cache 在微处理机中的位置如下图:5. 直接映像Cache 和成组相联Cache 的组成结构有什么不同?答:直接映象 Cache 是将主存储器中每一页大小分成和 Cache 存储器大小一致,Cache 中每一块分配一个索引字段以确定字段,这样可以通过一次地址比较即可确定是否命中,但如果频繁访问不同页号主存储器时需要做频繁的转换,降低系统性能;成组相联Cache 内部有多组直接映象的 Cache ,组间采用全关联结构,并行地起着高速缓存的作用。
微型计算机原理与接口技术(第5 版)课后答案及问题墙第一章绪论{崔文韬问}:课后习题第一题,二进制数与十进制数转换。
{崔文韬答}: 11001010B=202D,00111101B=61D,01001101B=77D,10100100B=164D。
{崔文韬问}:课后习题第二题,16 进制数与十进制数转换。
{崔文韬答}:12CH=300D,0FFH=255,3A8DH=14989D,5BEH=1470D{崔文韬问}:课后习题第三题,十进制数转化为二进制数和16 进制数。
{杨艺答}:25D=19H=00011001B,76D=4CH=01001100B,128D=100H=00000001 00000000B,134D=106H=00000001 00000110B{ 杨艺答}:128D=80H=10000000B,134D=86H=10000110B{崔文韬问}:课后习题第四题,写出10 进制数的BCD 码{杨艺答}:327D=(0011 0010 0111)BCD,1256D=(0001 0011 0101 0110)BCD{杨艺答}:1256D=(0001 0010 0101 0110)BCD{崔文韬问}:英文单词About 的ASCII 码{沙猛答}:3935H{王金鑫改}:41H,62H,6FH,75H,74H{崔文韬问}:数字95 的ASCII 码{王金鑫答}:39H,35H{崔文韬问}:课后习题第六题:10 进制数的原码、补码、反码{杨艺答}:【+42】原=00101010B=【+42】反=【+42】补【-42】原=10101010B,【-42】反=11010101B,【-42】补=11010110B【+85】原=01010101B=【+85】反=【+85】补【-85】原=11010101B,【-85】反=10101010B,【-85】补=10101011B{崔文韬问}:机器语言或者机器码(Machine Code),汇编语言(Assemble Language),高级语言的定义{沙猛答}:机器码:计算机只认得二进制数码,计算机中的所有指令都必须用二进制表示,这种用二进制表示的指令称为机器码。
汇编语言:用助记符来代替二进制的机器码的符号语言高级语言:相对于机器语言,接近人们使用习惯的程序设计语言。
{崔文韬问}:课后习题第10 题{崔文韬答}:参考课本16 页图1.4{崔文韬问}:课后习题第11 题{崔文韬答}:参考课本11 页图1.2{杨艺答}:微处理器、存储器、I/O 接口,I/O 设备和总线。
6{崔文韬问}:课后习题第12 题{崔文韬答}:ALU:Arithmetic Logic Unit,CPU:Central Processing Unit,PC:Personal Computer,DOS:Disk Operation System{崔文韬问}:8086 和80386 各有多少根地址线,可直接寻址的内存空间是多少,他们的数据线各有多少根?{杨艺答}:8086 有20 根地址线A19~A0,可直接寻址的内存空间是2^20 个字节单元,有16 根数据线;80386 有32 根地址线,可直接寻址的内存空间是2^32 个字节单元,有32 根数据线。
{崔文韬问}:什么是二进制编码,常用的二进制编码有哪两种?{杨艺答}:采用若干特定的二进制码的组合来表示各种数字、英文字母、运算符号等的编码方式叫做二进制编码,常见的二进制编码有BCD 码和ASCII 码两种。
{崔文韬问}:解释位,字节,字,字长的含义?{沙猛答}:位bit:计算机中二进制数的每一位0 或1 是组成二进制信息的最小单位,称为位。
字节byte:8 个二进制信息组成的一个单位称为一个字节,1 Byte=8 Bits。
字word:由16 位二进制数即两个字节组成。
字长word length:决定计算机内部一次可以处理的二进制代码位数。
{刘玉年问}:存在计算机中的数都是以有符号数存储的,还是以无符号数存储的呢?{崔文韬答}:刘玉年同学,你能先自己尝试回答一下这个问题,或者说你自己的理解是什么?{刘玉年答}:应该是两者都不是吧,因为在运算的时候仅仅就是二进制数的运算,而判断结果的意义(是什么样的数)是通过标志为判断的。
{崔文韬答}:两者都不是,存储器中数据的含义是完全由编程人员决定的。
计算机只接收二进制数据,即01 序列。
至于原始数据是什么以及如何转化为二进制数据,都是由编程人员决定的。
计算机对所存储数据按照二进制计算法则进行运算,为适应有符号数和无符号数运算两种情况,通过设置标志位来计算结果在两种情况下的意义。
第二章8086CPU{崔文韬问}:8086/8088 可直接寻址多少内存(字节)单元?多少IO 端口?外部数据线各有多少?{董国福答}:8086/8088 可直接寻址1MB 内存空间;可以访问64K 个I/O 端口;但外部数据总线8086 有16 根,8088 有8 根。
{崔文韬问}:8086CPU 内部由那两部分组成?{俞楠答}:8086CPU 由总线接口单元(BIU)和指令执行单元(EU)两部分组成。
{崔文韬问}:EU,BIU,AX,BX,CX,DX,DS,CS,ES,SS,SP,BP,DI,SI 全称?{ 董国福答}:EU:Execution UnitBIU:Bus Interface UnitAX:AccumulatorBX:BaseCX:Count DX:Data DS:DataSegmentCS:Code SegmentES:Extra SegmentSS:Stack SegmentSP:Stack PointerBP:Base PointerDI:Destination IndexSI:Source Index{崔文韬问}:8086CPU 内部包含哪些寄存器?各有什么用途?{俞楠答}:1.数据寄存器:用来存放16 位数据信息或地址信息。
2.地址指针和变址寄存器:SP,BP,SI,DI 这组地址指针个变址寄存器加上基址寄存器BX,可与段寄存器配合使用,一起构成内存的物理地址。
(数据寄存器和地址指针和变址寄存器则被称为通用寄存器。
)(段基地址和段内偏移地址Offset 组合起来就可形成20 位物理地址)5.标志寄存器:6 个状态标志CF,PF,AF,ZF,SF,OF 用来表示指令执行后的结果或状态特征,根据这些特征,由转移指令控制程序的走向。
3 个控制标志,TF,IF,DF,可以根据需要用程序设置或清除。
{崔文韬问}:带符号数10110100B 和11000111B 相加,各标志位为多少?哪些标志位有意义?如果作为无符号数相加,各标志位为多少?哪些标志位有意义?{崔文韬答}:二进制数所有位都参与运算10110100+ 110001111 01111011OF SF ZF AFPF CF1 0 0 0 1 1程序员将该数看做有符号数,因此SF,OF,ZF,PF 有意义。
如果将该数看做无符号数,计算过程一样,标志位结果相同,CF,ZF,PF 有意义。
利用debug 程序验证结果:运行dosbox,输入debug,r 命令查看初始寄存器数值,a 命令输入汇编指令,t 命令执行查看结果,过程如下图所示:debug 中,flags 中的NV,UP 等表示什么含义,请查看百度网盘中共享的debug 教程,下图为该教程中的截图:{崔文韬问}:课后习题第七题,段地址:偏移地址与物理地址的关系(原理在书中31-32 页){俞楠答}:20 位的物理地址=段基地址*16+16 位的偏移量1200H*16+3500H=15500H(1200H*16 等同于把1200H 左移一位地址变成12000H,下面同理)FF00H*16+0458H=FF458H3A60H*16+0100H=3A700H{崔文韬问}:CS:IP=3456:0210,CPU 要执行的下条指令的物理地址为多少?{俞楠答}:3456H*16+0210H=33770H曲洋答:34770H{崔文韬问}:课后习题十一题,SS:SP=2000,0300H,堆栈在内存当中的物理地址范围是多少?执行两条PUSH 指令后,SS:SP=?再执行一条PUSH 指令后,SS:SP=?{俞楠答}:物理地址范围:(2000H*16+0) : (2000H*16+(0300H))=20000H : 20300H执行两条PUSH 指令后:SS : SP=2000H : (0300H-4)=2000H : 02FCH再执行一条PUSH 指令后,SS : SP=2000H : (02FC-2)=2000H : 02FAH{刘瑾改}:堆栈在内存当中的物理地址范围为:2000:0000H~2000:(0300H-1){崔文韬问}:课后习题十二题,从存储单元2000H 开始存放的字节数据为:3AH,28H,56H,4FH,试画出示意图说明,从2000H 和2001H 单元开始取出一个字数据各要进行几次操作,取出的数据分别等于多少?{俞楠答}:从2000H 中取出一个字数据要进行 一次操作,取出字为283A。
从2001H 中取出一个字数据要进行 两次操作,取出字为5628。
{罗小东补充}:如下表,如果从2000H 取出一个字数据,则执行一次操作直接取出一个字283AH如果从2001H 开始取出一个字数据,则需进行两次操作,分别是——先从2000H 单元开始读取一个字283AH,取得低字节28H,舍弃3AH;再从2002H 单元读取一个字数据,4F56H,取得其高字节56H,然后就可以得到2001H 单元开始取出的一个自数据——5628H。
原理就是:8086CPU 对存储器进行存取操作时,都是从偶地址体开始的。
2000 3A2001 282002 562003 4F{罗小东问}:一个含有16 个字节数据的变量,它的逻辑地址为1000:0100H,那么该变量的最后一个字节数据的物理地址是H?(可不可以答案再加点简单分析呀){崔文韬问}:设定SS:SP 后形成的堆栈占据一定的物理地址范围,是否可无限次执行PUSH 或者POP 指令?为什么?{苏子宇答}:堆栈有一定的容量,无限次执行push 会超出范围,导致覆盖设定的堆栈空间外的数据,产生栈顶越界现象。
堆栈空间是程序员向系统请,系统开辟的安全数据空间,空间外的数据可能具有其他用途,任意改动可能引发错误。
8086CPU 不提供检测栈顶是否越界的机制。
编程时要注意栈顶越界问题,根据可能用到的最大栈空间来安排堆栈大小,防止入栈的数据导致栈顶越界。
{刘玉年问}:8086 有20 根地址总线,可寻址的内存空间是1M,是不是就说8086 里面的内存空间就只有1M 呢?如果不是这样的,那么多余的地址空间又该如何寻址呢?{崔文韬答}:8086 的内存寻址空间真的只有1M,这1M 空间分配给内存使用(包含显存,主内存,BIOS 的ROM)。