《微机原理与接口技术》第四章习题集与解答(共14页).doc
精选优质文档-倾情为你奉上习题集解答专心-专注-专业第五章 汇编语言程序设计1从4000H单元开始定义数据段如下,请画出所定义存储器的分配图。 BUF SEGMENT DAl DW 3456H DA2 DB 2 DUP(7,8) BUF ENDS答:存储器的分配图2对于习题1的定义,请说明下列每条指令执行后的结果。 1、 MOV AX,SEG DAl 2、MOV AX,SEG DA2 3、MOV BX,OFFSET DAl 4、MOV BX,OFFSET DA2 5、MOV CX,TYPE DAl 6、MOV CX,TYPE DA2 7、MOV DX,LENGTH DAl 8、MOV DX,LENGTH DA2 9、MOV AX,SIZE DAl 10、MOV AX,SIZE DA2答:1、(AX)=(DS) 2、(AX)=(DS)+2 3、(BX)=4000H 4、(BX)=4002H 5、(CX)=2 6、(CX)=1 7、(DX)=2 8、(DX)=4 9、(AX)=2 10、(AX)=4 3已知数据定义如下,请计算变量PL的值是多少? DATA DB AB DATAl DB 10 DUP(?) PL EQU $-DATA答:PL=DATA+12-DATA=12 4已知A25、B15、C4,请计算下列表达式的值。 (1) A × 50+B (2) A MOD C+B (3)(A+4)×B-3 (4) B3 MOD 4 (5)A LE B (6) A XOR 50答:(1) A × 50+B= 25 × 50+15=1250+15=12515 (2) A MOD C+B=25 MOD 4+15=1+15=16 (3)(A+4)×B-3 =(25+4)×15-3 =1500-3=1497 (4) B3 MOD 4 =15/3 MOD 4 =5 MOD 4 =1 (5)A LE B =25 LE 15 = 0 (6) A XOR 50 = 25 XOR 50 = 43 5已知内存DATA单元存放一个字数据,请统计其中含有0的个数,并送人RESULT单元的程序。答:程序如下:DATA1SEGMENTDATADW 1234hCOUNTDB 0DATA1ENDSCODESEGMENTASSUME CS:CODE,DS:DATA1START:MOV AX,DATA1MOV DS,AXMOV AX,DATAMOV CX,16LOP:TEST AX,8000HJNZ NEXTINC RESULTNEXT:ROL AX,1LOOP LOPINT 3CODEENDSEND START6已知从数据段TAB单元开始,顺序存放十六进制数0F的ASCII码,寄存器AL中的高四位二进制数是0、低四位是1。 请设计程序:用查表指令(XLAT)将寄存器AL中低四位的十六进制数转换为ASCII码。答:DATASEGMENT TABDB 'ABCDEF' DATAENDSCODESEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXLEA BX,TABXLATINT 3CODEENDSEND START7已知从数据段BUF单元开始存放一个三字节的带符号数,请设计对其求补的程序。 答:DATASEGMENT BUF DB 97H,87H,9AHRES DB 3 DUP(?) DATAENDSCODESEGMENT ASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AX LEA BX,BUF LEA SI,RES MOV CX,3LOP: MOV AL,BXXOR AL,0FFHMOV SI,AL LOOP LOPCLC LEA SI,RES MOV CX,3LOP1: MOV AL,SIADC AL,0MOV SI,AL LOOP LOP1INT 3CODEENDSEND START 8已知从数据段BUF单元开始存放字节型的带符号数X和Y,请设计计算Y6X+8的程序。答:DATASEGMENT BUF DB 97H,87H ;X=97H和Y=87HDATAENDSCODESEGMENT ASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AX MOV AH,0MOV AL,BUFSHL AX,1 MOV BX,AXSHL AX,1ADD AX,BXADD AX,8MOV BUF+1,ALMOV BUF+2,AHINT 3CODEENDSEND START 9已知X、Y是字节型的无符号数,请设计程序计算: X4 (0x<10) Y X-10 (10X<20) 答:程序如下:DATASEGMENTX DB 84HY DB 0DATAENDSCODESEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV AL,XCMP AL,10JAE NEXTSHR AL,1SHR AL,1JMP ENNEXT:SUB AL,10EN:MOV Y,ALINT 3CODEENDS 10已知从数据段BUF单元开始存放15个字节型数据,请设计程序将其中负数和零分别送往MINUS和ZERO开始的存储器单元。答:程序如下: DATA SEGMENTBUF DB 15DUP(?)MINUS DB 15 DUP(?) ;存放负数ZERO DB 15 DUP(?) ;存放0DATA ENDS CODESEGMENTASSUME CS:CODE,DS:DATAORG 100HSTART:MOV AX,DATAMOV DS,AXLEA BX,BUFMOV CX,15LEA SI,MINUSLEA DI,ZEROLOP:MOV AL,BXCMP AL,0JGE PZMOV SI,ALINC SIJMP NEXTPZ:JG NEXTMOV DI,ALINC DIJMP NEXTNEXT:INC BXLOOP LOPINT 3CODEENDSEND START 12编一程序将字符串STR(长度20字节)中所有"&"用"$"代替。答:程序如下:DATASEGMENTSTRDB 'G674GH&6TR677&74Y&98'DATAENDSCODESEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXLEA BX,STRMOV CX,20LOP:MOV AL,BXCMP AL,'&'JNZ NEXTMOV AL,'$'MOV BX,ALNEXT:INC BXLOOP LOPINT 3CODEENDSEND START13请设计程序,将存储器单元22002210H清0、2250H2260H置1、22AOH 22BOH置55H。要求写出主程序和子程序。解:程序如下: DATA SEGMENTBUF1 EQU 2200HBUF2 EQU 2200HBUF3 EQU 2200HDATA ENDSSTACK SEGMENT DB 20 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKBEG PROC FARSTART: MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX LEA BX,BUF1MOV AL,0CALL FMOVLEA BX,BUF2MOV AL,1CALL FMOVLEA BX,BUF3MOV AL,55HCALL FMOV RETSTART ENDPFMOV PROC NEAR MOV CX,16 LOP: MOV BX,AL INC BX LOOP LOP RETFMOV ENDPCODE ENDS END BEG 14编写程序,要求: (1)键盘键入两个字符串STRING1和STRING2 (2)比较两串所含字符是否完全相同,若相同则显示MATCH,若不相同则显示 NOMATCH。解:程序如下: DATA SEGMENTSTRING1 DB 10 DB ? DB 10 DUP(?) STRING2 DB 10 DB ? DB 10 DUP(?)XT DB 'MATCH',13,10,'$' BXT DB 'NO MATCH',13,10,'$'DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX LEA DX,STRING1 MOV AH,10 INT 21HLEA DX,STRING2 MOV AH,10 INT 21H MOV AL,STRING1+1 CMP AL,STRING2+1 JNZ BD LEA SI,STRING1+2 LEA DI,STRING2+2MOV CH,0 MOV CL,ALLOP: MOV AL,SI CMP AL,DI JNZ BD INC SI INC DI LOOP LOP LEA DX,XTJMP DO1BD: LEA DX,BXTDO1: MOV AH,9 INT 21H MOV AH,4CH INT 21HCODE ENDS END START 第六章 存储器1计算机的内存和外存有什么区别?答:内存储器(主存储器)用来存放当前机器运行的程序和数据,它是计算机主机的一部分,一般把具有一定容量且速度较高的存储器作为内存储器,CPU可直接用指令对内存储器进行读写。在微机中通常用半导体存储器作为内存储器。 外存储器用来存放当前暂时不用的程序和数据。外存储器是存储容量大、速度较低、位于主机之外的存储器。CPU不能直接用指令对外存储器进行读写。 要使用外存储器中的信息,必须先将它调入内存储器。2计算机的三级存储系统是什么?解决了什么实际问题?答:在现代微机中同时采用这两种存储层次,构成cache内存外存三级存储系统。这三级存储系统的形成,满足了现代微型计算机对存储系统的速度快、容量大且价格低廉的要求。cache内存存储系统解决了速度与成本的矛盾。cache内存外存三级存储系统解决了存储器的大容量和低成本之间的 矛盾。3半导体存储器有哪些优点?SRAM、DRAM各有何特点?SRAM的某一单元中存放一个数据,如05H,CPU将其取走后,该单元的内容是什么?答:半导体存储器有易读易写、体积小、集成度高、速度快的优点。 DRAM的特点是必须定时刷新、集成度高、功耗低、价格便宜。 该单元的内容是05H(不变)4ROM、PROM、EPROM、E2PROM各有何特点?各用于何种场合?答:掩膜式ROM 用定作掩膜对存储器进行编程,一旦制造完毕,内容固定不能改变。适合批量生产,但不适用于科研工作。 可编程式的ROM(PROM) PROM允许用户一次性写入,再也不可更改。因此,不适用于科研。 可擦除式的ROM(EPROM) EPROM允许用户多次写入信息,写入操作由专用的写入设备完成。写入之前应先擦除原来写人的信息。一种擦除方式为紫外光擦除,用紫外光照射15分钟左右,芯片中的信息被擦除,成为一块“干净”的EPROM,可再次写入信息。电擦除式的ROM(E2PROM),即用特定的电信号对其进行擦除,可在线操作,因此很方便。它的特点是写入时电压要求较高(一般为20V25V),写入速度较慢而不能像RAM那样作随机存取存储器使用。5EPROM存储器芯片还没有写入信息时,各单元的内容是什么?使用EPROM时应注意什么?答:FFH 对EPROM的擦除和写入都有专用设备,写入之前应确保芯片是“干净”的,即为全1状态。EPROM写入器(或称编程器)一般可对多种型号的EPROM芯片进行写入。通过读写芯片的识别码来确认该使用什么样的编程脉冲和编程电压。写入器由软件和硬件两部分组成,常与计算机配套工作。6若用4K×l位的RAM芯片组成16K×8位的存储器,需要多少芯片?A19A0地址线中哪些参与片内寻址?哪些作为芯片组的片选信号?答:16K×8/4K×l=4×8=22×8=32片 需要32片 4K=22 ×210=212 12根地址线 A11A0 22 2根地址线 A13A127下列RAM各需要多少条地址线进行寻址?各需要多少条数据IO线? (1)512K×4 (2)1K×8 (3)16K×4 (4)64K×l答:(1)512K×4 512K=29×210=219 19根地址线 4 4根数据线(2)1K×8 1K=20×210=210 10根地址线 8 8根数据线(3)16K×4 16K=24×210=214 14根地址线 4 4根数据线(4)64K×l 64K=26×210=216 16根地址线 1 1根数据线8已知某微机控制系统中的RAM容量为4K×8位,首地址为4800H,求其最后一个单元的地址。答:最后一个单元的地址-首地址+1=4KB=212=1000H最后一个单元的地址=4800H+1000H-1=57FFH9设有一个具有14位地址和8位数据的存储器,问 (1)该存储器能存储多少字节的信息? (2)如果存储器由8K×4位RAM芯片组成,需要多少片? (3)需要多少位地址用于芯片选择?答:(1)存储器的容量=214×8=16K×8=16KB 214个字节(16384个)(2) 16K×8/8K×4=2×2=21×2=4片(3) 21 1根地址线 A1310若用2114芯片组成2KBRAM,地址范围为3000H37FFH,问地址线应如何连接?(假设CPU只有16条地址线、8条数据线,可用线选法和全译码法。)答:2114芯片 1K×42KB =2K×8/1K×4=2×8=21×8=16片 需要16片 1K=20 ×210=210 10根地址线 A9A0线选法: 21 1根地址线 A10 A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 3000H 0 0 1 1 0 0 1 1 1 1 1 1 1 1 1 1 33FFH 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 3400H 0 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 37FFH 全译码法: 16-10=6 A15A10 G2B C B AA15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 3000H 0 0 1 1 0 0 1 1 1 1 1 1 1 1 1 1 33FFH 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 3400H 0 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 37FFH 11选用存储芯片和译码芯片,构成其起始地址为的一个的存储子系统(假设CPU只有16条地址线、8条数据线,用全译码法。) 答:6116 2K×8 2KB =2K×8/2K×8=1×1=20×1=1片 需要1片 2K=21 ×210=211 11根地址线 A10A0全译码法: 16-11=5 A15A11 G2A G2B C B AA15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 C000H 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 C7FFH