16/32位微机原理、汇编语言,答案
- 格式:doc
- 大小:1.21 MB
- 文档页数:45
第二章2.5 1M=220 因为最小的一个段的大小为16个字节(一个小段),所以 最多有220/24=216(1) 0FFFFH:0 物理地址为 0FFFF0H(2) 40H:17H 物理地址为 400H+17H=417H(3) 2000H:4500H 物理地址为200000H+4500H=24500H(4) 0B821H:4567H 物理地址为 0B8210H+4567H=0BC777H2.9 (1) CX 16位 DL 8位 操作数宽度不一样(类型不一致)(2) IP 不能作为源操作数,也不能作为目的操作数(3) 立即数不能直接赋给段寄存器(4)段寄存器间不能直接赋值(5) 类型不一致,立即数300超过8位,不能赋给8位寄存器AL(6) 寄存器间接寻址方式不能使用sp 寄存器(7)+作为算术运算符,它的操作数为常量(8)20h 为立即数不能作为目的操作数2.12 (1) ADD DX, BX(2) ADD AL,BYTE PTR [BX+SI] 或ADD AL,BYTE PTR [BX][SI](3) ADD [BX+0B2H],CX(4)ADD WORD PTR [0520H],3412H(5)ADD AL,0A0H21203h 20100h20101h 20102h 20103h 21201h 21201h 21202h2.16(1)1256H (2)20A1H+1256H+20000H=232F7H又[232F7H]=3280H所以EA=3280H 2.17(1)当AX=1E1EH时(2)当AX的D7和D0位不同时为0时(3)无符号数cx<64H时3.9 (1) 67h (2) 133h (3) 230h (4)41h (5)7654H3.11(1) my1b db 'Personal Computer'(2) my2b db 20(3) my3b db 14h(4)my4b db 00010100B(5) my5w dw 20 dup (?)(6) my6c equ 100(7)my7c = 'Personal Computer'3.14109h 10ah 113h114hAX=114H AX=6AX=0DH AX=02H 100h。
微机原理课后习题参考答案第1部分微型计算机基础知识1.1 微处理器、微型计算机和微型计算机系统三者之间有什么不同?【解】微处理器:指计算机内部对数据进行处理并对处理过程进行控制的部件,伴随着大规模集成电路技术的迅速发展,芯片集成密度越来越高,CPU可以集成在一个半导体芯片上,这种具有中央处理器功能的大规模集成电路器件,被统称为“微处理器”。
微型计算机:简称“微型机”、“微机”,也称“微电脑”。
由大规模集成电路组成的、体积较小的电子计算机。
由微处理机(核心)、存储片、输入和输出片、系统总线等组成。
特点是体积小、灵活性大、价格便宜、使用方便。
微型计算机系统:简称“微机系统”。
由微型计算机、显示器、输入输出设备、电源及控制面板等组成的计算机系统。
配有操作系统、高级语言和多种工具性软件等。
1.2 CPU在内部结构上由哪几部分组成?CPU应该具备哪些主要功能?【解】CPU在内部结构上由运算器、控制器、寄存器阵列和内部总线等各部分构成,其主要功能是完成各种算数及逻辑运算,并实现对整个微型计算机控制,为此,其内部又必须具备传递和暂存数据的功能。
1.3 微型计算机采用总线结构有什么优点?【解】①简化了系统结构,便于系统设计制造;②大大减少了连线数目,便于布线,减小体积,提高系统的可靠性;③便于接口设计,所有与总线连接的设备均采用类似的接口;④便于系统的扩充、更新与灵活配置,易于实现系统的模块化;⑤便于设备的软件设计,所有接口的软件就是对不同的口地址进行操作;⑥便于故障诊断和维修,同时也降低了成本。
总线的逻辑电路有些是三态的,即输出电平有三种状态:逻辑“0”,逻辑“1”和“高阻”态。
1.4计算机总线有哪些,分别是什么?【解】总线按其信号线上传输的信息性质可分为三组:①数据总线,一般情况下是双向总线;②地址总线,单向总线,是微处理器或其他主设备发出的地址信号线;③ 控制总线,微处理器与存储器或接口等之间1.5 数据总线和地址总线在结构上有什么不同之处?如果一个系统的数据和地址合用一套总线或者合用部分总线,那么要靠什么来区分地址和数据?【解】数据总线(DB)为双向结构,数据在CPU与存储器或I/O 接口之间的传送是双向的,(数据既可以读也可以写),其宽度通常与微处理器的字长相同。
16、32位微机原理、汇编语⾔及接⼝技术教程课后习题答案《16/32位微机原理、汇编语⾔及接⼝技术教程》部分习题参考解答第1章微型计算机系统概述〔习题1.2〕什么是通⽤微处理器、单⽚机(微控制器)、DSP芯⽚、嵌⼊式系统?〔解答〕通⽤微处理器:适合较⼴的使⽤领域的微处理器,例如装在PC机、笔记本电脑、⼯作站、服务器上的微处理器。
单⽚机:是指通常⽤于控制领域的微处理器芯⽚,其内部除CPU外还集成了计算机的其他⼀些主要部件,只需配上少量的外部电路和设备,就可以构成具体的使⽤系统。
DSP芯⽚:称数字信号处理器,也是⼀种微控制器,其更适合处理⾼速的数字信号,内部集成有⾼速乘法器,能够进⾏快速乘法和加法运算。
嵌⼊式系统:利⽤微控制器、数字信号处理器或通⽤微处理器,结合具体使⽤构成的控制系统,其典型的特点是把计算机直接嵌⼊到使⽤系统之中。
〔习题1.5〕说明微型计算机系统的硬件组成及各部分作⽤。
〔解答〕CPU:CPU也称处理器,是微机的核⼼。
它采⽤⼤规模集成电路芯⽚,芯⽚内集成了控制器、运算器和若⼲⾼速存储单元(即寄存器)。
处理器及其⽀持电路构成了微机系统的控制中⼼,对系统的各个部件进⾏统⼀的协调和控制。
存储器:存储器是存放程序和数据的部件。
外部设备:外部设备是指可和微机进⾏交互的输⼊(Input)设备和输出(Output)设备,也称I/O设备。
I/O设备通过I/O接⼝和主机连接。
总线:互连各个部件的共⽤通道,主要含数据总线、地址总线和控制总线信号。
〔习题1.6〕什么是总线?微机总线通常有哪3组信号?各组信号的作⽤是什么?〔解答〕总线:传递信息的共⽤通道,物理上是⼀组公⽤导线。
3组信号线:数据总线、地址总线和控制总线。
(1)地址总线:传输将要访问的主存单元或I/O端⼝的地址信息。
(2)数据总线:传输读写操作的数据信息。
(3)控制总线:协调系统中各部件的操作。
〔习题1.7〕简答如下概念:(1)计算机字长(2)取指-译码-执⾏周期(5)ISA总线〔解答〕(1)处理器每个单位时间可以处理的⼆进制数据位数称计算机字长。
微机原理答案习题11.什么是汇编语言,汇编程序,和机器语言?答:机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指令的集合。
汇编语言是面向及其的程序设计语言。
在汇编语言中,用助记符代替操作码,用地址符号或标号代替地址码。
这种用符号代替机器语言的二进制码,就把机器语言编程了汇编语言。
使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序。
2.微型计算机系统有哪些特点?具有这些特点的根本原因是什么?答:微型计算机的特点:功能强,可靠性高,价格低廉,适应性强、系统设计灵活,周期短、见效快,体积小、重量轻、耗电省,维护方便。
这些特点是由于微型计算机广泛采用了集成度相当高的器件和部件,建立在微细加工工艺基础之上。
3.微型计算机系统由哪些功能部件组成?试说明“存储程序控制”的概念。
答:微型计算机系统的硬件主要由运算器、控制器、存储器、输入设备和输出设备组成。
“存储程序控制”的概念可简要地概括为以下几点:①计算机(指硬件)应由运算器、存储器、控制器和输入/输出设备五大基本部件组成。
②在计算机内部采用二进制来表示程序和数据。
③将编好的程序和原始数据事先存入存储器中,然后再启动计算机工作,使计算机在不需要人工干预的情况下,自动、高速的从存储器中取出指令加以执行,这就是存储程序的基本含义。
④五大部件以运算器为中心进行组织。
4.请说明微型计算机系统的工作过程。
答:微型计算机的基本工作过程是执行程序的过程,也就是CPU自动从程序存放的第1个存储单元起,逐步取出指令、分析指令,并根据指令规定的操作类型和操作对象,执行指令规定的相关操作。
如此重复,周而复始,直至执行完程序的所有指令,从而实现程序的基本功能。
5.试说明微处理器字长的意义。
答:微型机的字长是指由微处理器内部一次可以并行处理二进制代码的位数。
它决定着计算机内部寄存器、ALU和数据总线的位数,反映了一台计算机的计算精度,直接影响着机器的硬件规模和造价。
习题 3.9(1)mov al, 23h and 45h or 67h;al=67h(2)mov ax, 1234h/16 + 10h;ax=0133h(3)mov ax, 23h shl 4;ax=0230h(4)mov al, ‘a’ and (not (‘a’-’A’));al=41h(5)mov ax, (76543 lt 32768) xor 7654h;ax=7654h习题 3.10(1)41h 42h 43h 0ah 10h 45h 46h ffh - 04h 04h 04h ffh - 04h 04h04h ffh - 04h 04h 04h(2)10h 00h fbh ffh - - - - - -习题 3.11(1)my1b db 'Personal Computer'(2)my2b db 20(3)my3b db 14h(4)my4b db 00010100b(5)my5w dw 20 dup(?)(6)my6c equ 100(7)my7c equ < Personal Computer >习题 3.14(1)offset varb = 0104h;offset mess = 0114h(2)type buff = 1;type mess = 1;type vard = 4(3)sizeof varw = 4;sizeof buff = 10;sizeof mess = 5(4)lengthof varw =2;lengthof vard = 1习题 3.15(1)mov byte ptr [bx],1000 ;1000超出了一个字节范围(2)mov bx,offset myword[si];OFFSET只能用于简单变量.寄存器的值只有程序执行时才能确定,而offset是汇编过程计算偏移地址,故无法确定,可以改为lea bx,myword[si](3)cmp mybyte1,mybyte2 ;两个都是存储单元,指令不允许(4)mov mybyte1,al+1 ;数值表达式应为运算符加常量,寄存器值只有执行时才能确定,汇编时无法计算(5)sub al,myword ;字节量AL与字量myword,类型不匹配(6)jnz myword ;Jcc指令只有相对短转移寻址方式,不支持间接寻址方式,间接寻址指指令代码中指示寄存器或存储单元,目的地址从寄存器或存储单元中取得习题 3.16.model small ;定义程序的存储模式.stack ;定义堆栈段.data ;定义数据段.codestart: mov ax,@data;程序段起点mov ds,ax ;设置DSmov ah,1 ;只允许输入小写字母int 21hsub al,20h ;转换为大写字母mov dl,almov ah,2int 21h ;显示mov ax,4c00hint 21hend start习题 3.17ASCTOH macrolocal asctoh1,asctoh2cmp al,'9'jbe asctoh1 ;;小于等于‘9’,说明是0~9,只需要减去30hcmp al,'a'jb asctoh2 ;;大于‘9’,小于‘a’,说明是A~F,还要减7sub al,20h ;;大于等于‘a’,说明是a~f,还要减20h asctoh2: sub al,7asctoh1: sub al,30hendm.model small ;定义程序的存储模式.stack ;定义堆栈段.data ;定义数据段LEDtable db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8hdb 80h,90h,88h,83h,0c6h,0c1h,86h,8ehdispmsg db 'input a number:$'crlf db 0dh,0ah,'$'lednum db ?.codestart: mov ax,@data;程序段起点mov ds,ax ;设置DSmov dx,offset dispmsgmov ah,09hint 21hmov ah,1int 21hasctohmov lednum,almov dx,offset crlfmov ah,09hint 21hmov bx,offset LEDtablemov al,lednumxlatmov bl,almov cl,4rol al,clcall htoascmov al,blcall htoascmov ax,4c00hint 21hHTOASC proc;子程序HTOASC:将al低4位表达的十六进制数转换为ASCII码push bxmov bx,offset ASCII ;bx指向ascii码表and al,0fh ;取得一位16进制数xlat CS:ASCII ;换码:AL←CS:[BX+AL]mov dl,almov ah,2int 21hpop bxret;数据区ASCII db 30h,31h,32h,33h,34h,35h,36h,37h,38h,39hdb 41h,42h,43h,44h,45h,46hHTOASC endpend start习题3.18mov al, bufXcmp al, bufYjae donemov al, bufYdone: mov bufZ, al习题3.19.;习题3.19.model small.stack.databufX dw -7signX db ?.codestart: mov ax,@datamov ds,axcmp bufX,0 ;test bufX,80hjl next ;jnz nextmov signX,0jmp donenext: mov signX,-1done: mov ax,4c00hint 21hend start习题3.20.;习题3.20.model small ;定义程序的存储模式.stack ;定义堆栈段.data ;定义数据段bufx dw -1bufy dw -1bufz dw -1.codestart: mov ax,@data;程序段起点mov ds,ax ;设置DSmov dl,'2'mov ax,bufxcmp ax,bufyje next1dec dlnext1: cmp ax,bufzje next2mov bx,bufycmp bx,bufzje next2dec dlnext2: mov ah,2int 21hmov ax,4c00hint 21hend start习题3.21.;数据段number db 78h ;实现假设的一个数值0111 1000B,D3为1addrs dw offset fun0,offset fun1,offset fun2,offset fun3dw offset fun4,offset fun5,offset fun6,offset fun7;取得各个处理程序开始的偏移地址.codestart: mov ax,@data;程序段起点mov ds,ax ;设置DSmov al,numbermov bx,0 ;BX←记录为1的位数mov dl,'?' ;处理数据为零的情况,显示?cmp number,0jnz restartmov ah,2int 21hjmp doneRestart: cmp al,0 ;AL=0结束jz doneagain: shr al,1 ;最低位右移进入CFjc next ;为1,转移inc bx ;不为1,继续,只在不为1的时候增加bx,所以后文补充jmp againnext: push axpush bxshl bx,1 ;位数乘以2(偏移地址要用2个字节单元)jmp addrs[bx] ;间接转移: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 dispdisp: mov ah,2 ;显示一个字符int 21hpop bxpop axinc bx ;注意,即使Di位不为1,为记录确切的分支入口,仍然需要增加bxjmp restartdone: mov ax,4c00hint 21hend start习题3.22.model small ;定义程序的存储模式.stack ;定义堆栈段.data ;定义数据段b_data db 12h,45h,0f3h,6ah,20h,0feh,90h,0c8h,57h,34h ;原始数据num equ 10 ;数据个数sum db ? ;预留结果单元.codestart: mov ax,@data;程序段起点mov ds,ax ;设置DSxor si, si ;位移量清零xor al, al ;取第一个数mov cx, num ;累加次数again: add al, b_data[si] ;累加inc si ;指向下一个数loop again ;如未完,继续累加mov sum, al ;完了,存结果mov ax,4c00hint 21hend start习题3.23;xiti323,空格数目放在total中.model small ;定义程序的存储模式.stack ;定义堆栈段.data ;定义数据段total dw ?wtemp dw ? ;是writ子程序的入口参数.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 退出循环mov total,ax ;total中放空格数mov ax,totalmov wtemp,axcall writemov ax,4c00hint 21hwrite proc ;显示有符号10进制数的通用子程序write push ax ;入口参数:共享变量wtemppush bxpush dxmov ax,wtemp ;取出显示数据test ax,ax ;判断数据是0,正数还是负数jnz write1mov dl,'0' ;是0,显示“0”后退出mov ah,2int 21hjmp write5write1: jns write2 ;是负数,显示“-“mov bx,ax ;ax中数据暂存于bx,因为要用dos调用mov dl,'-'mov ah,2int 21hmov ax,bxneg ax ;数据求补(绝对值)write2: mov bx,10push bx ;10压入堆栈,作为推出标志write3: cmp ax,0 ;数据(商)为0,转向显示jz write4sub dx,dx ;扩展被除数dx.axdiv bx ;数据除以10,dx.ax/10,商送ax,余数送dxadd dl,30h ;余数(0~9)转换为ascii码push dx ;数据各位按照先低位后高位依次压入堆栈jmp write3write4: pop dx ;数据各位按照先高位后低位依次弹出堆栈cmp dl,10 ;判断是否结束,标志为10je write5mov ah,2 ;显示int 21hjmp write4write5: pop dxpop bxpop axretwrite endpdpcrlf proc ;使光标回车换行的子程序push axpush dxmov ah,2mov dl,0dhint 21hmov ah,2mov dl,0ahint 21hpop dxpop axretdpcrlf endpend start习题3.24;数据段count equ 100parray dw count dup(?) ;假设有100个数据wordsum dw 0msg db ‘overflow’,’$’;代码段mov cx,countmov ax,0mov bx,offset parrayagain: add ax,[bx]jnc nextmov dx,offset msgmov ah,9int 21h ;显示溢出信息jmp done ;然后,跳出循环体next: add bx,2loop againmov wordsum,axdone: mov ax,4c00hint 21h习题3.25;xiti325.asm;编程把—个16位无符号二进制数转换成为用8421BCD码表示的5位十进制数。
1632位微机原理、汇编语言及接口技术第五章课后习题答案-习题 5.2在半导体存储器中, RAM 指的是随机存取存储器 ,他可读可写,但断电后信息一般会丢失 ; 而 ROM 指的是只读存储器 , 正常工作时只能从中读取信息, 但断电后信息不会丢失。
以EPROM 芯片 2764为例, 其存储容量为 8K ×8位, 共有 8 条数据线和 13 条地址线。
用它组成 64KB 的 ROM 存储区共需 8 片 2764芯片。
习题 5.7什么是存储器连接中的 “ 位扩充 ” 和 “ 地址扩充 ” ?欲组成 32KB 的 RAM 存储区,在采用容量 1K ×4位的静态 RAM 芯片或容量16K ×1位的静态 RAM 芯片的情况下,各需要多少芯片?在位方向和地址方向上各要进行什么样的扩充?请画出采用2114芯片时的连接示意图。
解答:⏹位扩充——存储器芯片数据位数小于主机数据线数时,利用多个存储器芯片在数据 “ 位 ”方向的扩充;⏹地址扩充 (字扩充——当一个存储器芯片不能满足系统存储容量时,利用多个存储器芯片在 “ 地址 ” 方向的扩充⏹组成 32KB 存储空间,用 SRAM 2114(1K ×4需要 64个芯片;⏹组成 32KB 存储空间,用 DRAM 4116(16K ×1需要 16个芯片;⏹它们都需要进行位扩充和地址扩充习题 5.8⏹存储芯片为什么要设置片选信号?⏹它与系统地址总线有哪些连接方式?⏹采用何种连接方式可避免地址重复?⏹采用哪些连接方式可节省用于译码的硬件?解答:⏹片选信号说明该存储器芯片是否被选中正常工作,设置它可以比较方便地实现多个存储器芯片组成大容量的存储空间⏹存储器片选信号通常与 CPU 地址总线的高位地址线相关联,可以采用“ 全译码 ” 、 “ 部分译码 ” 、 “ 线选译码 ” 方式⏹采用全译码方式可以避免地址重复⏹采用部分或线选译码可以节省译码硬件习题 5.9:在一个针对存储器的译码系统中,如果有4个地址线未参与译码,那么每个存储单元会同时拥有几个地址?解答:24=16习题 5.10请写出图 5.33中 4个存储芯片各自的可用地址范围,并指明其重复地址解答 1解答 2习题 5.11用 6264芯片(容量 8K ×8位的 SRAM ,采用全译码方式,在 8088系统的内存区段40000H ~43FFFH 扩充 RAM 区。
微机原理习题册答案16位32位微处理器1.在8086系统中,下一条指令所在单元的物理地址是如何计算的?8086指令存放在CS段中,指令的段内偏移地址由IP提供。
所以下一条指令的物理地址:CSX16+IP2.若某存储器容量为2KB,在计算机存储系统中,其起始地址为2000H:3000H,请计算出该存储器物理地址的范围?存储容量是2KB,因此地址范围为000H:7FFH。
起始逻辑地址是2000H:3000H,则首地址的物理地址2000HX16+3000H,末地址再加7FFH,范围可知3.8086的复位信号是什么?有效电平是?CPU复位后,寄存器忽然指令队列处于什么状态?是输入8086CPU的一个RESET的控制信号,高电平有效。
当此信号有效时,8086处于初始化状态,此时14个16位寄存器除CS为FFFFH外全清0,指令队列清空。
4.8086 CPU标志寄存器中的控制位有几个?简述它们的含义?3个,方向标志DF-决定字符串操作时地址修改的方向。
中断允许标志IF-表示CPU是否允许响应外部可屏蔽中断,陷阱标志TF-决定CPU是否在每条指令执行完后自动产生一个内部中断5.8086与8088CPU的主要区别是什么?1.8086是真正地16位微处理器,有16条地址/数据复用线AD15-AD0,而8088是准16位微处理器,内部运算为16位,数据输出仅有8条地址/复用线AD7-AD0。
2.8086把1MB存储空间分成2个512KB,有奇偶地址之分,分别由BHE信号和A0信号作为选择线,而8088无BHE引脚,它的存储空间不划分奇偶。
3.前者存储器、IO控制线为M/IO,后者为IO/M。
4.前者指令队列为6字节,后者为4个6.8086/8088 CPU 由哪两部分构成,主要功能是什么?BIU:是8086/8088 CPU的总线接口部件,EU:是8086/8088 CPU的执行部件。
前者功能是使8086/8088 CPU与储存器或I/O 接口电路进行数据交换,包括四个寄存器CS,DS,SS,ES,指令指针IP,指令队列等。
习题11.4习题11.6连接只改PA→PB,其余不变只要把涉及输出到端口A的代码改为输出到端口B即可。
PC7做选通信号,为输出,即C端高部分为输出PC2为Busy,为输入,即C端低部分为输入C端整个定为方式0B端输出,方式0A端任意,这里为方式0输出假设8255A端口A、B、C和控制端口地址分别为FFF8H、FFFAH、FFFCH和FFFEH。
;8255A的初始化mov dx,0fffeh ;控制端口地址:FFFEHmov al,10000001B ;方式控制字:10000001=81Hout dx,al ;B端口方式0输出,C端口上方式0输出、下方式0输入,; 端口任意(方式0,出)mov al,00001111B ;端口C的复位置位控制字,使PC7=1out dx,al ;使PC7=1,即置STROBE*=1(只有输出数据时才为低脉冲);输出打印数据子程序,入口参数AH=打印数据;查询printc procpush axpush dxprn: mov dx,0fffch ;读取端口Cin al,dx ;查询打印机状态and al,04h ;00000100,PC2=BUSY=0?jnz prn ;PC2=1,打印机忙,则循环等待;打印子程序:输出mov dx,0fffAh ;PC2=0,打印机不忙,则输出数据mov al,ahout dx,al ;将打印数据从端口B输出;打印子程序:打印mov dx,0fffeh ;从PC7送出控制低脉冲mov al,00001110B ;置STROBE*=0out dx,alnop ;产生一定宽度的低电平nopmov al,00001111B ;置PC7=1,即STROBE*=1out dx,al ;最终,STROBE*产生低脉冲信号;打印子程序:返回pop dxpop axretprintc endp习题11.7方式1输出下:端口A的ACK*即PC6,OBF*即PC7,INTR即PC3对应端口B的ACK*即PC2,OBF*即PC1,INTR即PC0数据端口变换为PBmov dx,0fffehmov al,84hout dx,almov al,04h ;使INTEB(PC2)为0,禁止中断out dx,al……mov cx,counter ;打印字节数送CXmov bx,offset buffer ;取字符串首地址call prints ;调用打印子程序prints procpush ax ;保护寄存器push dxprint1: mov al,[bx] ;取一个数据mov dx,0fffahout dx,al ;从端口B输出mov dx,0fffchprint2: in al,dxtest al,02h ;检测(PC1)为1否?jz print2inc bxloop print1pop dxpop axretprints endp习题11.8L0~L3对应PC4~PC7,L亮否可以通过给PC4~PC7置位复位实现,即C端口的高部分为输出;根据K0~K3(PC0~PC3),确定L0~L3(对应PC4~PC7)亮否,所以C端低部分为输入;又C端的8位都被正常使用,所以A端口和B端口均为方式是0;写入方式字mov al,100×00×1b ;=81hmov dx,控制口地址;0fffehout dx,al;加入下一段更好,使L0~L3全亮mov al,0fhmov dx,端口C地址;0fffchout dx,al ;PC4~PC7为高,经反向驱动为0,与阳极间形成通路,LED亮;控制程序段mov dx,端口C地址;0fffchin al,dx ;读入PC0~PC3mov cl,4shl al,cl ;左移4位,PC0~PC3→PC4~PC7out dx,al ;控制PC4~PC7。
第一章1.1 解:五代,详细见书1.2 解:微型计算机:以大规模、超大规模集成电路为主要部件,以集成了计算机主要部件——控制器和运算器的微处理器为核心,所构造出的计算机系统。
PC机:PC(Personal Computer)机就是面向个人单独使用的一类微机。
单片机:用于控制的微处理器芯片,内部除CPU外还集成了计算机的其他一些主要部件,如:ROM、RAM、定时器、并行接口、串行接口,有的芯片还集成了A/D、D/A转换电路等。
数字信号处理器DSP:主要面向大流量数字信号的实时处理,在宿主系统中充当数据处理中心,在网络通信、多媒体应用等领域正得到越来越多的应用1.3 解:微机主要有存储器、I/O设备和I/O接口、CPU、系统总线、操作系统和应用软件组成,各部分功能如下:CPU:统一协调和控制系统中的各个部件系统总线:传送信息存储器:存放程序和数据I/O设备:实现微机的输入输出功能I/O接口:I/O设备与CPU的桥梁操作系统:管理系统所有的软硬件资源1.4 解:系统总线:传递信息的一组公用导线,CPU通过它们与存储器和I/O设备进行信息交换。
好处:组态灵活、扩展方便三组信号线:数据总线、地址总线和控制总线。
其使用特点是:在某一时刻,只能由一个总线主控设备来控制系统总线,只能有一个发送者向总线发送信号;但可以有多个设备从总线上同时获得信号。
1.5解:(1)用于数值计算、数据处理及信息管理方向。
采用通用微机,要求有较快的工作速度、较高的运算精度、较大的内存容量和较完备的输入输出设备,为用户提供方便友好的操作界面和简便快捷的维护、扩充手段。
(2)用于过程控制及嵌人应用方向。
采用控制类微机,要求能抵抗各种干扰、适应现场的恶劣环境、确保长时间稳定地工作,要求其实时性要好、强调其体积要小、便携式应用强调其省电。
1.6 解:1.7 解:I/O通道:位于CPU和设备控制器之间,其目的是承担一些原来由CPU处理的I/O任务,从而把CPU从繁杂的I/O任务中解脱出来。
由10根信号线组成(A9-A0)。
1.8解:BIOS:基本输入输出系统。
主要功能:用来驱动和管理诸如键盘、显示器、打印机、磁盘、时钟、串行通信接口等基本的输入输出设备1.9 解:基本RAM区:640KB保留RAM区:128KB扩展ROM区:128KB基本ROM区:128KB1.10 解:(1)、数—用来直接表征量的大小,包括:定点数、浮点数。
(2)、码—用来指代某个事物或事物的某种状态属性,包括:二进制、八进制、十进制、十六进制。
区别:使用场合不同,详见P16.1.11 解:(1)1021016174.66)(10101110.10101)174.66)(.8)AE A ==(((2)210216100*********.01011)(2283.34375)100011101011.01011)(8.58)EB ==(((3)1621610F18A6.6)(11110001100010100110.0110)F18A6.6)(989350.375)==((1.12 解:原码 反码 补码+37 00100101/25H 00100101/25H 00100101/25H-37 10100101/A5H 11011010/DAH 11011011/DBH1.13 解:+37 -3716位32位 16位 32位 00 25H 00 00 00 25H FF 5BH FF FF FF 5BH1.14 解:无符号数:70D补码有符号数:70DBCD 码:46DASCII:F1.15 解:1)、相加后若出现和大于9,则将和减去10后再向高位进12)、若出现组间进位,则将低位加61.16 解:详见课本16页。
1.17 解:C3 40 20 001.18 解:50 50H十进制值50 80 二进制 十六进制 二进制 十六进制0011 0010B 32H 0101 0000B 50H1.19 解:D:44Hd:64HCR:0DHLF:0AH0:30HSP:20HNUL:00H1.20 解:国标码:36 50H机内码:B6 B0H第二章2.1算术逻辑单元ALU、寄存器组和控制器;总线接口单元BIU:管理8088与系统总线的接口负责cpu对接口和外设进行访问执行单元EU:负责指令译码、执行和数据运算;8位cpu在指令译码前必须等待取指令操作的完成,8088中需要译码的指令已经取到了指令队列,不需要等待取指令。
而取指令是cpu最为频繁的操作,因此8088的结构和操作方式节省了大量等待时间,比8位cpu节省了时间,提高了性能。
2.28个8位寄存器:AH、AL、BH、BL、CH、CL、DH、DL;8个16位寄存器:累加器AX、基址寄存器BX、计数器CX、数据寄存器DX、源地址寄存器SI、目的地址寄存器DI、基址指针BP、堆栈指针SP。
2.3标志用于反映指令执行结果或者控制指令执行形式。
状态标志用于记录程序运行结果的状态信息;控制标志用于控制指令执行的形式。
2.4例:有运算:3AH+7CH=B6H作为无符号数运算,没有进位,CF=0;作为有符号数运算,结果超出范围,OF=1.2.58088中每个存储单元有唯一的20位地址,称为物理地址。
处理器通过总线存取存储器数据时,采用这个物理地址。
在用户编程过程中采用的“段地址:偏移地址”的形式称为逻辑地址。
将逻辑地址中的段地址左移4位,加上偏移地址就得到物理地址。
1MB最多能分成65536个逻辑段。
2.6代码段:存放程序的指令序列;堆栈段:确定堆栈所在的主存储区;数据段:存放当前运行程序的数据;附加段:附加数据段,用于数据保存。
另外串操作指令将其作为目的操作数的存放区。
2.78088的存储空间分段管理,程序设计时采用逻辑地址。
由于段地址在默认的或指定的段寄存器中,所以只需要偏移地址,称为有效地址EA.操作数在主存中有以下几种寻址方式:直接寻址、寄存器间接寻址、寄存器相对寻址、基址变址寻址、相对基址变址寻址。
2.8(1)立即数寻址ax:1200H(2)寄存器寻址ax:0100H(3)存储器直接寻址ax:4C2AH(4)寄存器间接寻址ax:3412H(5)寄存器间接寻址ax:4C2AH(6)基址变址寻址ax:7856H(7)相对基址变址寻址ax:65B7H2.9(1)cx为字寄存器,dl为字节寄存器,类型不匹配。
(2)mov指令的目的操作数只能是寄存器或者主存单元,ip是指针。
(3)不允许立即数到段寄存器的传送。
(4)不允许段寄存器之间的直接传送。
(5)数据溢出。
(6)sp不能用于寄存器间接寻址。
(7)格式不对。
应为:mov ax,[bx+di](8)mov指令的操作数不能是立即数。
2.10(1)bx得到table的偏移地址,bx=200H.(2)将立即数8送到al。
(3)换码,al=12H.2.11(1)al=89H(2)al=12H,cf=1,zf=0,sf=0,of=1,pf=1(3)al=0AFH,cf=0,zf=0,sf=1,of=0,pf=1(4)al=0AFH,cf=1,zf=0,sf=1,of=1,pf=1(5)al=0,cf=0,zf=1,sf=0,of=0,pf=1(6)al=0FFH,cf=0,zf=0,sf=1,of=0,pf=1(7)al=0,cf=0,zf=1,sf=0,of=0,pf=12.12(1) add dx,bx(2) add al,[bx+si](3) add word ptr[bx+0B2H],cx(4) add word ptr[0520H],3412H(5)add al,0A0H2.13运算公式:X Y X Z V /)540*(+--。
商存储在ax ,余数存储在dx 。
2.14(1)ax=1470H(2)ax=1470H,cf=0,of=0,sf=0,zf=0,pf=0(3)ax=1470H,cf=0,of=0,sf=0,zf=0,pf=0(4)ax=0,cf=0,of=0,sf=0,zf=1,pf=1(5)ax=0FFFFH,cf=0,of=0,sf=0,zf=1,pf=1(6)ax=0FFFFH,cf=0,of=0,sf=1,zf=0,pf=12.15相对寻址方式、直接寻址方式、间接寻址方式。
2.16(1)1256H(2)3280H2.17(1)ax=1E1EH(2)al 的D0、D7位不全为0(3)cx<64H2.18执行65536次。
2.19功能:将数组中每个字元素相加,结果存储于total 。
2.20(1)lea si,stringMov dh,[si]Mov dl,[si+5](2)mov ax word ptr buffer1Sub ax word ptr buffer2Mov dx word ptr buffer1+2Sbb dx word ptr buffer2+2(3)test dx,0F000Hjz eveneven: mov ax,0(4)mov cx,4again: sar dx,1rcr ax,1loop again(5)mov cx,100mov si,0again: mov al,0FFHadd al,array[si]mov array[si],alinc siloop again2.21Htoasc procMov bl,alMov al,ahMov bh,10Mul bhAnd ax,00FFHAdd al,blHtoend: retHtoasc endp2.22计算机系统利用中断为用户提供硬件设备驱动程序。
在IBM-PC系列微机中,基本输入输出系统ROM-BIOS和DOS都提供了丰富的中断服务程序,称为系统功能调用。
调用步骤(1)AH中设置系统功能调用号(2)在指定寄存器中设置入口参数(3)使用中断调用指令执行功能调用(4)根据出口参数分析调用情况2.23Htoasc procAnd al,0FHAdd al,90HDaaAdc al,40HDaaMov dl,alInt 21HRetHtoasc endp2.24Numout procXor ah,ahAamAdd ax,3030HMov dl,ahMov ah,02HInt 21HMov dl,alMov ah,02HInt 31HRetNumout endp2.25Msgkey db”input number 0-9”,”$”Msgwrg db”error”,”$”Mov ah,09HMov dx,offset msgkeyInt 21HAgain: mov ah,01HInt 21HCmp al,30HJb dispCmp al,39HJa dispMov dl,alMov ah,02HInt 21HJmp doneDisp: mov dx,offset msgwrgMov ah,09HInt 21HJmp againMov dl,alInt 21H第3章3.1 解:汇编语言是一种以处理器指令系统为基础的低级程序设计语言,它采用助记符表达指令操作码,采用标识符号表示指令操作数,可以直接、有效地控制计算机硬件,因而容易创建代码序列短小、运行快速的可执行程序3.2 解:(1)完整的汇编语言源程序由段组成(2)一个汇编语言源程序可以包含若干个代码段、数据段、附加段或堆栈段,段与段之间的顺序可随意排列(3)需独立运行的程序必须包含一个代码段,并指示程序执行的起始点,一个程序只有一个起始点(4)所有的可执行性语句必须位于某一个代码段内,说明性语句可根据需要位于任一段内(5)通常,程序还需要一个堆栈段3.3 解:存储模式特点TINY COM类型程序,只有一个小于64KB的逻辑段(MASM 6.x支持)SMALL小应用程序,只有一个代码段和一个数据段(含堆栈段),每段不大于64KB COMPACT代码少、数据多的程序,只有一个代码段,但有多个数据段MEDIUM代码多、数据少的程序,可有多个代码段,只有一个数据段LARGE大应用程序,可有多个代码段和多个数据段(静态数据小于64KB)HUGE更大应用程序,可有多个代码段和多个数据段(对静态数据没有限制)FLAT32位应用程序,运行在32位80x86CPU和Windows 9x或NT环境3.4 解:开始位置:用标号指明返回DOS:利用DOS功能调用的4CH子功能来实现汇编停止:执行到一条END伪指令时,停止汇编3.5 解:段定位、段组合和段类型。