MCS_8086习题3_答案(部分)

合集下载

MCS_8086习题2_答案

MCS_8086习题2_答案

习题2答案:1 、在8086微处理器中执行如下指令后,标志寄存器中状态标志为何值?MOV AX, 999BHADD AX, 800AHOF = 1,SF = 0,AF = 1,ZF = 0,PF = 1,CF = 12、Z80和8086执行指令的过程有何区别?请解释什么是预取指令技术?1)Z80总是按照取指令、译码、执行这么三步循环执行指令,而8086则采用了预取指令技术,在指令执行同时并行取指,提高了指令执行效率;2)预取指令技术指提前将指令从存储器取到CPU内,每次执行时直接从CPU 内部获得指令。

3、8086管理的最大存储器空间和I/O端口空间是多少,写出地址范围?8086采用何种技术,如何管理存储器空间?1)8086最大能管理1M的存储空间和64K的I/O空间(因为8086用20根地址线寻址存储空间,用低16根地址线寻址I/O空间)2) 1M存储空间的地址范围:00000H ~ 0FFFFFH64K的I/O空间地址范围:0000H ~ 0FFFFH3)8086采用分段管理技术管理存储器空间,即将1M的存储空间分成若干个段,每段的大小不超过64K,将每段起始地址中的高16位称为段地址,每段中某个存储单元距离起始位置的偏移量称为偏移地址,CPU根据段地址和偏移地址寻址存储器空间中的每一个单元4、若程序执行之前,CS=0A7EH和IP=2B40H,则该程序入口物理地址是多少?指向这个入口地址的CS和IP的值是唯一的吗?程序入口物理地址为0D320H,不唯一5、请画出8088最小模式下的总线连接电路?要求包含8282 、8284 、82866、请设计电路将小模式的WR 、RD 、M/IO信号转换成最大模式总线上的MEMR 、MEMW 、IOR 、IOW信号。

7、8086的RESET引脚是什么信号有效?8086复位后各寄存器的值是多少?ISQ的状态是什么?CPU执行的第一条指令物理地址是多少?并请查阅资料说明:在微机的启动过程中,如何检测是否有扩展卡上的ROM程序(选做)?答:RESET是高电平有效,复位后除了CS以外,其余寄存器均清0,ISQ被清空,CPU复位后执行的第一条指令的物理地址为0FFFF0H。

MCS_8086习题3

MCS_8086习题3

MCS_8086习题3习题3:1. 编写程序段,将2个32位⽆符号数DAT1和DAT2相乘,结果保存在64位⽆符号数Result 中;2. 有2个4字节⽆符号数分别存放在扩展段2000H 和3000H 开始的单元中,低位在前,⾼位在后,将两数相加,结果存放在数据段2000H 开始的单元中,请编写程序段完成以上功能;3. 8086系统中,请说明下列指令的源操作数的寻址⽅式是什么?1)MOV AX, 1234H 2)MOV AX, [1234H] 3)MOV AX, [BX]4)MOV AX, 1234H[BX + SI] 5)MOVSB 6)IN AL, DX4. 请在下表中画出下列数据段以⼗六进制表⽰的各单元值(表格中每个单元表⽰⼀个字节),并写出变量var1, var2, var3的偏移地址和cnt 的值。

data SEGMENT para ORG 30Hvar1 DB -2, ‘A ’, 2 dup(‘23’) var2 DW -1 cnt EQU $-var1 var3 DW var2 data ENDS5. 以下程序实现将变量var 进⾏var*10+600的操作,并将计算结果保存在变量result 中,当程序执⾏到地址M5的时候,请在以下表格中画出当前堆栈指针的位置和堆栈⾥的内容(程序断点可以⽤标号,在堆栈中可⽤寄存器名代表保存的内容,SS 的内容不⽤指定,表格的每个单元表⽰⼀个字)。

(6分)低地址⾼地址0030Hdata segmentvar dw 1000result dd ?data endssseg segment stackdb 100 dup(?)sseg endscode segmentassume cs:code, ds:data, ss:ss_seg main proc farpush dsmov ax, 0push axmov ax, datamov ds, axmov ax, varM1: c all CaculateM2: d w 10M3: d w 600M4: l ea bx, resultmov [bx], axmov [bx+2], dxretmain endpCaculate procpush bpmov bp, sppush sipushbx ⾼地址低地址mov bx, [bp+2]mov si, cs:[bx]mul siM5: a dd ax, cs:2[bx]adc dx, 0add bx, 4mov [bp+2], bxpop bxpop sipop bpretCaculate endpcode endsend main6. 问答题1)若AL = 81H,则执⾏指令CBW后AH的内容为多少?2)若BL = BEH,执⾏下列指令序列,则每执⾏⼀步,BL和CF的值为多少?SHL BL, 1 ;BL = _____, CF = ______MOV CL, 2SHR BL, CL ; BL = _____, CF = ______OR BL, 80SAR BL, 1 ; BL = _____, CF = ______ROR BL,CL ; BL = _____, CF = ______INC CLRCL BL, CL BL = _____, CF = ______3)什么是短跳转、近跳转、远跳转?4)若当前SP = 1000H,CS = B000H ,IP = 0100H,且当前FLAG = 2345H,则执⾏指令INT 21H以后,SP的值变为多少?堆栈段中6个存储单元0FFFH、0FFEH、0FFDH、0FFCH、0FFBH、0FFAH的值分别是多少?7. 请写出程序段实现下列功能例如:从160H端⼝读取1个字节MOV DX, 160HIN AL, DX1)将⼀个8位数20H写⼊到地址为20H的端⼝;2)若AL = 56H,BL = 57H,将这两个压缩格式BCD码相加并将结果保存到存储单元[2000H]中;3)求数据段偏移地址为1000H开始的⼀个字符串的长度,字符串以ASCII码0为结束符,长度要求包括结束符;(提⽰:初始化AL = 0CX = 0FFFFH,然后使⽤REPNZ SCASB命令,最后根据CX的值计算字符串长度)8. 请判断以下8086汇编指令是否正确,正确则在指令前打√,错误则打×( ) 1) MOV DS, 1000H ( ) 18) LEA [1000H], MSG ( ) 2) MOV DX, 1000H ( ) 19) LDS ES, MSG( ) 3) MOV IP, AX ( ) 20) LES DX, MSG( ) 4) MOV [1000H], [SI] ( ) 21) ADD DS, 1000H( ) 5) PUSH [SI] ( ) 22) ADC DX, [DI]( ) 6) PUSH AL ( ) 23) SUB [BX], 1000H( ) 7) PUSH 200H ( ) 24) SUB [BX + BP], 1000H ( ) 8) POP CS ( ) 25) IMUL 100H( ) 9) POP AX ( ) 26) DIV word ptr 100H[BP] ( ) 10) XCHG AX, DS ( ) 27) AND BP, 1001H( ) 11) XCHG AX, 1000H[SI + DI] ( ) 28) SHL [BX], 1( ) 12) IN AX, [SI] ( ) 29) ROR AX, 4( ) 13) IN BL, 80H ( ) 30) RCL word ptr [BX], CL ( ) 14) IN AX, 160H ( ) 31) SAR dword ptr [BX], CL ( ) 15) IN AL, DX ( ) 32) MOVSW( ) 16) OUT AL, DX ( ) 33) REPNZ SCASB( ) 17) OUT 80H, AL ( ) 34) RETI。

单片机及微机原理课后习题答案

单片机及微机原理课后习题答案

第1章思考题及习题参考答案1写出下列二进制数的原码、反码和补码(设字长为8位)。

(1)001011 (2)100110(3)-001011 (4)-111111答:(1)原码:00001011 反码:00001011 补码:00001011(2)原码:00100110 反码:00100110 补码:00100110(3)原码:10001011 反码:11110100 补码:11110101(4)原码:10111111 反码:11000000 补码:110000012已知X和Y,试计算下列各题的[X+Y]补和[X-Y]补(设字长为8位)。

(1) X=1011 Y=0011(2) X=1011 Y=0111(3) X=1000 Y=1100答:(1)X补码=00001011 Y补码=00000011 [–Y]补码=11111101[X+Y]补=00001110 [X-Y]补=00001000(2)X补码=00001011 Y补码=00000111 [–Y]补码=11111001[X+Y]补=00010010 [X-Y]补=00000100(3)X补码=00001000 Y补码=00001100 [–Y]补码=11110100[X+Y]补=00010100 [X-Y]补=111111003 微型计算机由那几部分构成?答:微型计算机由微处理器、存储器和I/O接口电路构成。

各部分通过地址总线(AB)、数据总线(DB)和控制总线(CB)相连。

4 8086的寻址范围有多大?其物理地址是如何形成?答:8086有20根地址总线,它可以直接寻址的存储器单元数为1M字节,其地址区域为00000H—FFFFFH。

物理地址是由段地址与偏移地址共同决定的,物理地址=段地址×16+偏移地址其中段地址通常来自于段寄存器CS ,物理地址来自于IP。

5 什么叫单片机?它有何特点?答:单片机就是在一块硅片上集成了CPU、RAM、ROM、定时器/计数器和多种I/O口(如并行、串行及A/D变换器等)的一个完整的数字处理系统。

第3章 8086指令系统习题解答

第3章 8086指令系统习题解答

(1)MOV CL,[BX+20H][SI] 解:EA= BX+20H+SI=56H PA=DS*16+EA=91D0H+56H=9226H CL=(09226H)=F6H (2)MOV[BP][DI],CX 解: EA= BP+DI=56H PA=SS*16+EA=1E4F6H (1E4F6H)= 5678H
(3)AX=42C8H,BX=608DH 解:ADD AX,BX CF=0 ,OF=1, AX=0AC55H SUB AX,BX;CF=0,OF=0;L3 (4) AX=0D023H,BX=9FDOH 解:ADD AX,BX OF=1,CF=1,AX=6FF3H SUB AX,BX ;CF=1,OF=1;L5 (5)AX=9FDOH,BX=0D023H 解:ADD AX,BX OF=1,CF=1,AX=6FF3H SUB AX,BX ;CF=1,OF=1;L5
(1)当AL =00H时, 3.6 AND AL,AL 程序转向BRCHl JZ BRCHl RCR AL,1 (2)当AL =01H时, JZ BRCH2 程序转向BRCH2 RCL AL,1 INC AL (3)当AL =0FFH时, JZ BRCH3 程序转向BRCH3 上述程序运行后,试回答:
第三章习题讲评
3.1 已知DS=091DH,SS=1E4AH,AX=1234H,BX=0024H,CX=5678H,BP=0024H SI=0012H,DI=0032H,(09226H)=00F6H,(09228H)=1E40H,(1E4F6H)=091DH。 在以上给出的环境下,试问下列指令或指令段执行后的结果如何?
(3)LEA BX,[BX+2= BX+20H+ SI=0056H EA= BX+2=58H PA=DS*16+EA=91D0H+58H=9228H AX=(09228H)=1E40H

8086汇编语言程序格式习题及答案

8086汇编语言程序格式习题及答案

8086汇编语⾔程序格式习题及答案第4章汇编语⾔程序格式习题练习题1 单项选择题1.下列选项中不能作为名字项的是(C)。

A.FH B.A3 C.3B D.FADC2.下列指令不正确的是()。

A.MOV AL,123 B.MOV AL,123QC.MOV AL,123D D.MOV AL,123H3.下列指令不正确的是()。

A.MOV BL,OFFSET A (偏移量16位)B.LEA BX,AC.MOV BX,OFFSET A D.MOV BX,A4.若定义“BUF DB 1,2,3,4”,执⾏MOV AL,TYPE BUF 后AL=()。

A.0 B.1C.2 D.35.若定义“A EQU 100”,执⾏“MOV AX,A”后,AX=()。

A.A的偏移地址B.A单元中的内容C.100 D.A的段地址6.若定义“B DW 1,2,10 DUP(0)”,则该伪指令分配()字节单元。

A.10 B.20 C.22 D.247.若定义“C DD 2,4”,则该伪指令分配()个字节单元。

A.2 B.4 C.6 D.88、伪指令是()规定的汇编说明符,它在源程序汇编时进⾏说明。

A、DEBUGB、LINKC、MASM(汇编程序)D、EDIT9.在上机操作过程中,MASM命令执⾏后,除了⽣成⼀个⽬标⽂件外,根据选择还可以⽣成⼀个()⽂件。

A..LST B..EXE C..MAP D..ASM10.LINK命令执⾏后可以⽣成⼀个以()为扩展名的⽂件。

A.ASM B.EXE C.OBJ D.COM11.⼀个段最⼤可定义()字节。

A.1M B.64K C.32K D.16K12.若要求⼀个段的起始位置能被256整除的单元开始,在定位⽅式选项中应选()。

A.BYTE B.WORD C.PARA D.PAGE(页)13.宏指令与⼦程序相⽐,在多次调⽤时,宏指令调⽤的⽬标程序长度⽐⼦程序调⽤的()。

A.相同B.长C.短D.不定14.宏指令与⼦程序相⽐,⼦程序调⽤的执⾏速度⽐宏指令的()。

MCS_8086习题5及答案

MCS_8086习题5及答案

习题5及答案:(存储器扩展)1. 如图4-1所示,8088 CPU工作在最小模式,通过3片8282与系统地址总线相连,通过1片8286与系统数据总线相连,外扩1片27256(32K×8 EPROM)和1片62256(32K×8 RAM),要求EPROM起始地址为B0000H,RAM地址范围紧随其后,使用74LS138,采用全地址译码方式。

(14分)1)写出27256与62256的地址覆盖范围;(2分)2)请完成8088最小模式下总线连接图,并画出系统总线与存储器连接图,其中存储器读/MEMR信号和存储器写/MEMW信号,需要由8088 CPU的M/IO、/RD、/WR信号产生,连接时门电路自选。

(12分)图4-1 存储器连接1)27256地址覆盖范围B0000H~B7FFFH;62256地址覆盖范围B8000H~BFFFFH连接图文字说明如下:2)总线连接●8088 MN/MX引脚接+5V;A19~A16引脚接第一片8282的D7~D0;A15~A8引脚连接第二片8282的D7~D0;AD7~AD0引脚同时连接到第三片8282的D7~D0,也连接到8286的A7~A0;DT/R引脚连接8286的DIR引脚,/DEN引脚连接8286的/OE端;ALE引脚同时连接到三片8282的STB端;M/IO、/RD同时连接到与非门的输入端,输入低电平有效,输出连接27256和62256的/OE端,M/O、/WR引脚同时连接到另一片与非门的输入端,输入低电平有效,输出连接62256的/WE端●第一片8282输出A19连接74LS138的G1,第一片8282输出A18连接74LS138的/G2A和/G2B端,第一片8282输出A17~A16连接74LS138的C~B,第二片8282输出A15连接74LS138的A端,74LS138的/Y6输出连接27256的/CS端,74LS138的/Y7输出连接62256的/CS端;●第2片8282输出A14~A8同时连接到27256和62256的A14~A8;第3片8282输出A7~A0同时连接到27256和62256的A7~A0;●8286的输出B7~B0同时连接27256和62256的D7~D0端。

《计算机组成原理》第二章8086CPU练习题及答案

《计算机组成原理》第二章8086CPU练习题及答案

《计算机组成原理》第二章8086CPU练习题及答案选择题目:1. 运算器的主要功能是进行( C )。

A. 逻辑运算B. 算术运算C. 逻辑运算和算术运算D. 以上均不正确2. 下面寄存器为8位的是( B )A. IPB. AHC. SPD. DX3. 下列寄存器中,只能按位进行访问的是(B )。

A. AXB. FLAGC. CXD.BP4 CPU内部的指令指针寄存器IP的作用是( C )A. 用于存放某特定程序的地址指针B. 由于存放某条指令的地址C. 用于存放下一条要执行指令的偏移地址D. 用于存放下一条要执行指令的段地址5. 在补码运算时,如果运算结果为负,则下列标志位一定为1的是(A )A. SFB. ZFC. CFD. PF6. 8086CPU可寻址的最大内存空间为(B )A. 64KBB. 1MBC. 4MBD. 64MB7. 8086CPU中,可用于对内存单元进行间接寻址的寄存器有(B )个。

A. 2C. 6D. 88. 标志寄存器中可用于指令测试的状态为包括( D )。

A. CF、ZF、DF和PFB. CF、ZF、DF和OFC. CF、ZF、OF和PFD. CF、ZF、DF和IF9. 用来表示堆栈指针的寄存器是(D )A. IPB. BPC. SPD. SS10. 存储器物理地址形成规则是(B )A. 段地址+偏移地址B. 段地址左移4位+偏移地址C. 段地址×10+偏移地址D. 段地址×16H+偏移地址11. 关于8086微机系统中的存储器分段管理,下面说法正确的是(C )。

A. 各逻辑段的起始地址被称为该段的段地址B. 各逻辑段起始地址的低16位被称为该段的段地址C. 各逻辑段的起始地址必须能被16整除D. 各逻辑段之间相互独立,不能重叠。

12. 某存储存储单元的逻辑地址为1200H:0100H,下列说法中错误的是( D )。

A. 该存储单元的段地址是1200HB. 该存储单元的偏移地址是0100HC. 该存储单元的物理地址是12100HD. 该存储单元的物理地址是1300H13. 8086CPU地址总线和可寻址的存储空间分别为(A )。

华南农业大学汇编语言8086习题(附答案)

华南农业大学汇编语言8086习题(附答案)

题目名称实验一汇编语言程序结构题目关键字源程序结构 debug题目录入时间2013-3-13 22:45:26题目内容一、实验目的1.掌握汇编语言程序上机过程。

2.掌握汇编语言结构。

3.了解汇编程序、连接程序、DOS系统装入和返回功能。

4.掌握用DEBUG调试汇编语言程序的方法二、实验要求1. 编写完整的汇编语言程序:(1)逆序输出字符串“BASED ADDRESSING”。

(2)从键盘上输入2个一位的正数,求出它们的和(假设和不超过1 位)。

(3)试编写一段程序,要求在长度为100H字节的数组中,找出大于42H 的无符号数的个数并存入字单元UP中;找出小于42H的无符号数的个数并存入字单元DOWN中。

2.在DEBUG下查看程序执行的过程,以及变量值的变化。

3.演示程序运行结果,请指导教师检查。

三、思考1.汇编语言程序中语句END后的标号作用是什么?2.采用标准序结构编制源程序,用ret结束程序运行返回操作系统时,可否将语句main proc far中的far属性去掉,为什么?3.一个段的大小为多少?一定是64KB吗?如何在DEBUG下查看程序在内存的存放情况?四、提交内容将各个源程序代码、exe文件压缩为RAR后提交到作业系统。

题目创建人题目注释DA TAS SEGMENTString db "BASED ADDRESSING"count dw $-StringDA TAS ENDSSTACKS SEGMENTSTACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DA TAS,SS:STACKS START:MOV AX,DATASMOV DS,AXmov cx,count ;循环次数lea si,count-1 ;将最后一个字符‘G’的地址给si L:mov ah,2mov dl,[si]dec siint 21hloop LMOV AH,4CHINT 21HCODES ENDSEND START1.2.asmDA TAS SEGMENTx db "x=$"y db "y=$"z db "x+y=$"DA TAS ENDSSTACKS SEGMENTSTACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DA TAS,SS:STACKS START:MOV AX,DATASMOV DS,AXmov ah,9 ;显示"x="lea dx,xint 21hmov ah,1 ;输入Xint 21hsub al,30hmov cl,al ;将X放在CLmov ah,9 ;显示"y="lea dx,yint 21hmov ah,1 ;输入Yint 21hsub al,30hadd cl,al ;两数字相加mov ah,9 ;显示"z="lea dx,zint 21hmov ah,2 ;显示结果mov dl,cladd dl,30hint 21hMOV AH,4CHINT 21HCODES ENDSEND START1.3.asmDA TAS SEGMENTarray db 128 dup(41h,43h)up dw 0down dw 0DA TAS ENDSSTACKS SEGMENTSTACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DA TAS,SS:STACKS START:MOV AX,DATASMOV DS,AXlea di,arraymov cx,256L:mov al,[di]cmp al,42hjl L1ja L2L1:inc downjmp L3L2:inc upjmp L3L3:inc diloop LMOV AH,4CHINT 21HCODES ENDSEND START题目名称实验二程序结构与简单程序设计题目关键字简单程序设计题目录入时间2013-4-1 22:45:55题目内容一、实验目的1.掌握汇编语言源程序结构。

8086 8088 16位微处理器习题解答

8086 8088 16位微处理器习题解答

8086/8088 16位微处理器习题解答1.试说明8086/8088CPU中有哪些寄存器?各有哪些用途?答:寄存器组有(1)数据寄存器,含AX、BX、CX、DX四个通用寄存器,用来暂时存放计算过程中所遇到的操作数,结果和其它信息。

(2)指针及变址寄存器,含SP、BP、SI、DI四个十六位寄存器,它们可以像寄存器一样在运算过程中存放操作数只能以字为单位使用。

还用来在段内寻址时提供偏移地址。

(3)段寄存器,含CS、DS、SS、ES,用来专门存放段地址。

(4)控制寄存器,包括IP和PSW两个16为寄存器。

IP是指令指针寄存器,用来存放代码段中的偏移地址。

PSW为程序状态字寄存器,由条件码标志和控制标志构成。

条件码标志用来纪录程序运行结果的状态信息。

包括OF、SF、ZF、CF、AF、PF。

控制标志位有三个寄存器DF、IF、TF组成。

2.是说明8086/8088CPU中标志位寄存器中各标志位的意义?答:OF溢出标志,在运算过程中,如操作数超出了机器能表示的范围则置1,否则置0。

SF 符号标志,运算结果为负时置1,否则置0。

ZF零标志,运算结果为0置1,否则置0 。

CF进位标志,记录运算是最高有效位产生的进位。

AF辅助进位标志,记录第三位的进位情况。

PF奇偶标志位,用来为机器中传送信息时可能产生的出错情况提供检验条件,当结果操作数中的1的个数为偶时置1。

DF方向标志位,在串处理指令中控制处理信息的方向。

当DF=1时,每次操作后变址寄存器减量,这样就使串处理从高地址向低地址方向处理。

IF中断标志,当IF=1时,允许中断,否则间断中断。

TF陷阱标志,用于单步操作方式,当TF为1时,每条指令执行完后产生陷阱,由系统控制计算机。

当TF为0时,CPU正常工作不产生陷阱。

3.哪些操作只能隐含使用某个段寄存器,而不能用其它段寄存器代替?哪些操作出隐含使用某个段寄存器外,还可以使用其它段寄存器?答:计算程序的地址隐含使用CS,正在执行的程序隐含使用SS,而数据的地址隐含使用ES 和DS。

MCS_8086习题1_答案

MCS_8086习题1_答案

习题1答案:1. 微机的基本结构包括主机和外设,主机又包括CPU、存储器、I/O接口和总线,外设包括输入设备和输出设备;微处理器主要指CPU;微型计算机包括主机和外设,其中主机包括微处理器,主要针对硬件部分;微型计算机系统包括微型计算机和软件系统,能够独立运行。

2. 冯.诺依曼结构计算机的特点:●使用二进制表示程序和数据●使用存储器保存程序和数据●由输入设备、输出设备、运算器、存储器、控制器五部分组成3. 计算机中为什么要使用二进制编码?●二进制中只有两种状态,容易用电器表示,双稳态触发器,电容,电路通断等均可表示●二进制运算规则简单,容易用数字逻辑电路实现●二进制可以方便的表示逻辑值,进行逻辑运算2. -41 = (11010111)2 +74 = (01001010)2 -112 = ( 10010000 )23. 数值转换:114.175= ( 0111 0010. 0011 ) 2=( 72.3 )16 (近似值)11001.101B= ( 19.A )16= ( 25.625 )104. 182;-74;奇校验,‘6’,ASCII用于计算机与外部交换信息;6;奇校验5 . X + Y 00100000+ 10010000= 10110000 结果不溢出X – Y 00100000- 10010000= 10010000 结果溢出6.计算机中有符号数用补码表示,一个字的范围是-32768 ~ 327677. 总线是用于传输信息的一组通信线;微机中按照分时复用原则使用总线;8. 按照功能分为:地址总线、数据总线和控制总线;按照位置分为:CPU总线、局部总线、系统总线和外部总线ISA总线宽度为16位,频率为8MHz,传输率为16MB/SEISA总线是ISA总线的增强,宽度32位,频率8MHz,传输率为32MB/s PCI总线总线宽度32位,可扩展到64位,总线频率33MHz,也可提高到66MHz,传输率为132MB/s,可扩展到528MB/s,支持即插即用9. 使用三态门可以增加驱动,用作数据输入到总线时的缓冲,当需要总线时,打开三态门,传送数据;不需要总线时,关闭三态门,输出为高阻状态,以便别的器件可以使用总线,因此多个器件接入总线时,一定要使用三态电路;使用D触发器可以进行信号保持,用作信息输出时的锁存。

微机原理试题作业3(答案)

微机原理试题作业3(答案)

作业3(请同学们作业时,不要改变题号、字体及答案的颜色,仅修改表内答案字母)一、判断题[30分](在表格内填空,正确填A,错误填B请不要改变字体的颜色)1.不同指令的指令周期是等长的。

2.8086CPU 在响应中断时,执行叁个中断响应周期3.若SS=5310H,SP=0E30H,其物理地址为(53F30H)。

4.8086中断系统分为硬件中断和软件中断两类.5.若CH=07H,CL=08H,执行指令ADD CH,CL后,AF=( 0),CF=(0 ),OF=(0 ),PF=(1 )。

6.指令由(操作码) 和(操作数) 两个字段构成。

7.条件转移指令JNE的测试条件是(ZF=0 )。

8.若用指针(BP)访问存储器,则数据包含在(SS) 段中。

9.若AX=1234H,SP=1000H,指令PUSH AX执行后AX=( 1234H),SP=(0FFEH ) 。

10. 指令采用(立即)寻址方式时操作数是在代码段中。

11. 程序中的转移指令、返回指令以及中断处理都能对 CS 、 IP 进行操作。

12. SRAM 电源撤除,信息不会丢失。

13.MOV [ DI ][ SI ]14.DMA 是一种不需要 CPU 介入的高速数据传送方式。

15.8086 的中断系统中有两类硬中断:可屏蔽中断和软中断。

二、选择题[60分](在表格内填写正确答案的大写字母,请不要改变字体的颜色,当有多个A时,表示是多选题)1.程序中数据定义如下:DATA1 DW ?DATA2 DB 32 DUP(?)DATA3 DD ?COUNT EQU $-DATA1此时COUNT 的值是( C)。

(A) 19 (B) 39 (C) 38 (D) 372.执行下列程序段后:BUF DB 01H……XOR AL,ALMOV AL,BUFMOV BL,ALSAL AL,1ADD AL,BLXOR AL,0FFHHLT寄存器AL的值是多少?寄存器BL的值是多少?C(A) ①AL=0FFH ②BL=1(B) ①AL=0FCH ②BL=2(C)①AL=0FCH ②BL=1(D)①AL=0ECH ②BL=13.写出下列程序段的功能CMOV BX,2000HMOV DS,BXXOR AL,ALMOV CX,100AGAIN: MOV [BX],ALLOOP AGAIN(A) 数据段中以0100H起始的100个单元中的内容置1(B) 数据段中以0100H起始的100个单元中的内容清零(C)数据段中以2000H起始的64H个单元中的内容清零(D)数据段中以2000H起始的200个单元中的内容清零4.写出下列程序段的功能CLEA SI,BUFFERLEA DI,ARRAYMOV CX,100XOR BL,BLLP: CMP [SI],01HJNZ LP1INC BLLP1:INC SILOOP LPMOV [DI],BL(A) 统计以ARRAY为首址的100个单元中数字为1的个数存入BUFFER单元(B) 统计以ARRAY为首址的64H个单元中数字为1的个数存入BUFFER单元(C)统计以BUFFER为首址的100个单元中数字为1的个数存入ARRAY单元(D)统计以BUFFER为首址的100个单元中数字为0的个数存入ARRAY单元5.写出下列程序段的功能 DMOV CX,16MOV AX,NMOV BH,0LP0: SHL AX,1INC BHLP: LOOP LP0MOV SUM,BH(A) 统计CX字中0的个数(B) 统计CX字中1的个数(C)统计N字中1的个数(D)统计N字中0的个数6.写出下列程序段的功能 BMOV AL,NAND AL,0FHMOV BL,ALMOV AL,NSHR AL,4MOV BH,AL(A) 将将N的内容拆为两部分分别存入AL,BL中(B) 将N的内容拆为两部分分别存入BH,BL中(C)将N的内容拆为两部分分别存入BH,AL中(D)将N的内容拆为两部分分别存入AH,BL中7.执行下列程序段后,AX=? AMOV AX,0702HMOV BH,09HAADDIV BH(A) AX=0008H(B) AX=0009H(C) AX=0007H(D) AX=0006H8.下面程序段执行后AL=? DABC DW 2152H,3416H,5731H,4684H MOV BX,OFFSET ABCMOV AL,3XLAT(A) AL=16H(B) AL=52H(C) AL=67H(D) AL=34H9.执行下面的程序段后AX=? B MOV CX,5MOV AX,50NEXT: SUB AX,CXLOOP NEXTHLT(A) AX=22H(B) AX=23H(C) AX=33H(D) AX=21H10.执行下面的程序段后 AX=? D TAB DW 1,2,3,4,5,6ENTRY EQU 6MOV BX,OFFSET TABADD BX,ENTRYMOV AX,[BX](A) AX=0006H(B) AX=0001H(C) AX=0002H(D) AX=0004H11.执行下面程序段后 AX= AARRAY DW 1,2,3,4,5,6,7,8,9,10 COUNT EQU $-ARRAYXOR AX,AXMOV CX,COUNTMOV SI,OFFSET ARRAYNEXT:ADD AX,[SI]INC SILOOP NEXT(A) AX=0055H(B) AX=0555H(C) AX=5555H(D) AX=0005H12.写出下列程序段的功能 CMOV AH,1INT 21HAND AL,0FHMOV BL,ALMOV AH,1INT 21HSHL AL,4AND AL,BL将从键盘接受到的两个字符拼在一起(A) 将从键盘接受到的1个字符拼在一起(B)将从键盘接受到的叁个字符拼在一起(C)将从键盘接受到的两个字符拼在一起(D)将从显示接受到的两个字符拼在一起13.执行下列程序段后 AN DB 07HXOR BH,BHMOV BL,NRCL BL,1ADD BH,BLXOR BH,0FFHHLT寄存器BH的值是() ,寄存器BL的值是() 。

微机原理与接口技术第三版课本习题答案

微机原理与接口技术第三版课本习题答案

第二章8086体系结构与80x86CPU1.8086CPU由哪两部分构成?它们的主要功能是什么?答:8086CPU由两部分组成:指令执行部件①小Execution Unit)和总线接口部件①卬,Bus Interface Unit)。

指令执行部件^^主要由算术逻辑运算单元(ALU)、标志寄存器FR、通用寄存器组和EU控制器等4个部件组成,其主要功能是执行指令。

总线接口部件(8口)主要由地址加法器、专用寄存器组、指令队列和总线控制电路等4个部件组成,其主要功能是形成访问存储器的物理地址、访问存储器并取指令暂存到指令队列中等待执行,访问存储器或1/0端口读取操作数参加EU运算或存放运算结果等。

2.8086CPU预取指令队列有什么好处?8086CPU内部的并行操作体现在哪里?答:8086CPU的预取指令队列由6个字节组成,按照8086CPU的设计要求,指令执行部件^^在执行指令时,不是直接通过访问存储器取指令,而是从指令队列中取得指令代码,并分析执行它。

从速度上看,该指令队列是在CPU 内部,EU从指令队列中获得指令的速度会远远超过直接从内存中读取指令。

8086CPU内部的并行操作体现在指令执行的同时,待执行的指令也同时从内存中读取,并送到指令队列。

5.简述8086系统中物理地址的形成过程。

8086系统中的物理地址最多有多少个?逻辑地址呢?答:8086系统中的物理地址是由20根地址总线形成的。

8086系统采用分段并附以地址偏移量办法形成20位的物理地址。

采用分段结构的存储器中,任何一个逻辑地址都由段基址和偏移地址两部分构成,都是16位二进制数。

通过一个20位的地址加法器将这两个地址相加形成物理地址。

具体做法是16位的段基址左移4位(相当于在段基址最低位后添4个“0”),然后与偏移地址相加获得物理地址。

由于8086CPU的地址线是20根,所以可寻址的存储空间为1M字节,即8086系统的物理地址空间是1MB。

微型计算机课后答案(第三章)

微型计算机课后答案(第三章)

③ 指令“AND AX,BX”和“SUB AX,1234H”执行后, 源操作数不发生变化而目的操 作数发生变化。
10. 在已学的指令中,可实现累加器清 0 的单条指令有哪些?比较它们的功能。
答:共有以下四种方法:
(1)MOV AX,0 (2)SUB AX,AX
;仅将累加器清 0,不会影响任何标志位 ;累加器清 0 的同时影响所有状态标志,具体地有:
(4) MOV AX,[DX]
(5)
MOV
AX,[BX+BP]
(6) MOV AX,[SI+DI]
(7) MOV AH,300 (8) MOV [SI],[DI]
(9) PUSH AL (10) POP DH
(11) MOV CS,AX (12) MOV SS,AX (13) SHL AX,3
错误原因 目的操作数[SI]类型不明确 源操作数和目的操作数类型不一致 常数不能作目的操作数 DX 不能作地址寄存器 源操作数寻址方式错,两个寄存器都是基址寄存 器 源操作数寻址方式错,两个寄存器都是变址寄存 器 300 超出 AH 允许范围 源操作数和目的操作数不能同时为内存单元地 址 入栈的数据必须是一个 16 或 32 位数据 出栈的数据是一个 16 或 32 位数据,DH 是 8 位寄 存器 CS 值不能由程序员编程该变 SS 值不能由程序员编程该变 移位次数大于 1,应先将移位次数送 CL
POP
AX
POP
BX
(4)执行下面的程序段后,AL 的内容是(
MOV AL,20H
TEST AL,80H
JNZ
DO1
MOV BL,0
JMP DO1:MOV DO2:HLT
DO2 BL,1
答:

MCS_8086习题4_答案(部分)

MCS_8086习题4_答案(部分)

习题4答案:1. 从屏幕上输入大写字母,转换为小写字母并输出(生成.COM文件)要求:程序具有可读性、容错性code segment paraassume cs:code, ss:ss_seg, ds:dataorg 0100Hmain proc farmain1: lea dx, str1 ;显示提示信息mov ah, 9int 21hmov ah, 1 ;输入小写字母int 21hcmp al, ‘A’;判断输入字符是否为’a’~’z’jb errorcmp al, ‘Z’ja errorjmp nexterror: lea dx, str2 ;显示错误提示信息mov ah, 9int 21hjmp main1 ;跳转,重新输入next: add al, 20hpush axlea dx, str3 ;显示输出提示信息mov ah, 9int 21hpop axmov dl, al ;显示转换后的大写字母mov ah, 2int 21hmov ax, 4c00h ;返回操作系统int 21hmain endpstr1 db 0dh, 0ah, ‘Please input(a-z): $’str2 db 0dh, 0ah, ‘The input is error!$’str3 db 0dh, 0ah, ‘The result is: $’code endsend main2. 编写一子程序asc2bin,将ASCII转换为二进制数要求:输入参数:AL中存放需要转换的ASCII输出参数:AL中存放转换后的二进制数并返回;功能:将ASCII转换为二进制数;输入参数:AL中存放需要转换的ASCII;输出参数:AL中存放转换后得到的二进制数asc2bin procsub al, 30hcmp al, 9jbe asc2bin_1sub al, 7asc2bin_1: retasc2bin endp3. 内存中存放8个16位有符号数,求8个数值之和,并将结果存放在内存变量SUM中注:程序中应用到字扩展为双字的指令CWDdata segment parabuf dw -1, 30000, 35000, 36000, 37000, 20000, 10000, -2sum dd 0data endsss_seg segment stackdw 100 dup(0)ss_seg endscode segment paraassume cs:code, ds:data, ss:ss_segmain proc farmov ax, datamov ds, axlea bx, buf ;bx指向buf首地址mov cx, 8main1: mov ax, [bx]cwd ;有符号数字扩展为双字add word ptr sum, ax ;32位数相加adc word ptr sum + 2, dxinc bxinc bxloop main1 ;循环8次mov ax, 4c00hint 21hmain endpcode endsend main4. 内存中存放8个8位有符号数,请按从大到小顺序排列data segment parabuf db -1, 30, 35, 36, 37, 20, 100, -2data endsss_seg segment stackdw 100 dup(0)ss_seg endsassume cs:code, ds:data, ss:ss_segmain proc farmov ax, datamov ds, axmov cx, 8main1: mov bx, 0 ;外循环mov di, 0push cxmain2: mov al, buf[bx] ;内循环cmp al, buf[bx+1]jge nextxchg al, buf[bx+1] ;不符合规则, 则交换数据mov buf[bx], almov di, 1next: inc bxloop main2pop cxcmp di, 0 ;判断内循环是否发生数据交换jz exitloop main1exit: mov ax, 4c00hint 21hmain endpcode endsend main5. 内存中有8个16位数,请编写程序将8个数倒序排放例:定义内存中8个数buf dw 100, 3, 1, 20, 40, -2, 7, 10 程序运行后,buf开始应为:buf dw 10, 7, -2, 40, 20, 1, 3, 100buf dw -1, 30000, 35000, 36000, 37000, 20000, 10000, -2 data endsss_seg segment stackdw 100 dup(0)ss_seg endscode segment paraassume cs:code, ds:data, ss:ss_segmain proc farmov ax, datamov ds, axmov bx, 0mov cx, 8main1: push buf[bx]inc bxinc bxloop main1 ;8个数依次入堆栈lea bx, bufmov cx, 8main2: pop [bx]inc bxinc bxloop main2 ;8个数依次出栈mov ax, 4c00hint 21hmain endpcode endsend main6. 从键盘输入4位十进制数,然后以16进制形式显示在屏幕上.例:键盘输入:1024 屏幕上应显示:0400H要求:键盘输入和显示结果时均应有提示data segment parabuf db 4 dup(0)var dw 0str1 db 0dh, 0ah, ‘Please input four numbers(0-9): $’str2 db 0dh, 0ah, ‘The input is error, please try again. $’str2 db 0dh, 0ah, ‘The hex result is: $’data endsss_seg segment stackdw 100 dup(0)ss_seg endscode segment paraassume cs:code, ds:data, ss:ss_segmain proc farmov ax, datamov ds, axmain1: lea dx, str1 ;显示数据输入提示信息mov ah, 9int 21hmov bx, 0mov cx, 4 ;循环输入4个数main2: mov ah, 1 ;DOS功能调用,输入数据int 21hcmp al, ‘0’;判断输入字符是否为’0’-‘9’jb errorcmp al, ‘9’ja error ;若不为’0’-‘9’,则进行错误处理sub al, 30h ;ASCII转换为二进制,得到0-9mov buf[bx], al ;存入buf开始的缓冲区inc bxloop main2jmp next ;数据输入正确后,跳转到后续处理error: lea dx, str2 ;显示错误提示信息mov ah, 9int 21hjmp main1 ;跳转到重新输入next: mov ax, 0 ;(((0*10+B3)*10+B2)*10+B1)*10+B0 mov dx, 0 ;得到输入的4位十进制数mov si, 10mov bx, 0mov cx, 4main3: mul si ;相乘后dx仍然保持0mov dl, buf[bx]mov dh, 0add ax, dxinc bxloop main3 ;循环4次乘10mov var, ax ;得到的4位十进制数存放到var中lea dx, str3mov ah, 9int 21h ;显示输出提示符mov ch, 4 ;以16进制显示输入的数据, 循环4次mov cl, 4main4: rol var, cl ;循环左移4位mov ax, varand ax, 000fhcall bin2asc ;二进制转换为ASCIIcall pchar ;显示16进制dec chjnz main4mov al, ‘H’call pcharmov ax, 4c00hint 21hmain endp;功能: 将一个二进制数转换为ASCII;输入参数: AL中存放要转换的二进制数;输出参数: AL中存放转换后的ASCIIbin2asc procand al, 0fhadd al, 30hcmp al, 39hjbe bin2asc_1add al, 07hbin2asc_1: r etbin2asc endp;功能:显示字符;输入参数:AL中存放要显示字符的ASCII;输出参数:无pchar procmov dl, almov ah, 2int 21hretpchar endpcode endsend main7. 数据段从100H开始存放字符串str1,从200H开始存放str2,二者均以NULL字符为结束符,编写程序将str2拷贝到str1末尾,形成一个完整字符串例:ORG 100Hstr1 db 0dh, 0ah, ‘Hello ’, 0ORG 200Hstr2 db ‘Automation!’, 0程序运行后结果应为:str1 db 0dh, 0ah, ‘Hello Automation!’, 0 data segment paraORG 100Hstr1 db 0dh, 0ah, ‘Hello ’, 0ORG 200Hstr2 db ‘Automation!’, 0data endsss_seg segment stackdw 100 dup(0)ss_seg endscode segment paraassume cs:code, ds:data, ss:ss_segmain proc farmov ax, datamov ds, axmov es, axlea di, str1 ;es:di指向str1首地址mov al, 0repnz scasb ;查找str1结束符NULLdec di ;找到str1结束符,并让es:di指向该位置lea si, str2 ;ds:si指向str2首地址cld ;DF = 0main1: lodsb ;AL ← (ds:si), si = si + 1 stosb ;(es:di) ← AL, di = di + 1cmp al, 0 ;判断是否到str2的结束符jnz main1lea si, str1 ;ds:si指向拷贝后的str1首地址main2: lodsb ;显示拷贝后的str1字符串cmp al, 0jz exitcall pcharjmp main2exit: mov ax, 4c00hint 21hmain endp;功能:显示字符;输入参数:AL中存放要显示字符的ASCII;输出参数:无pchar procmov dl, almov ah, 2int 21hretpchar endpcode endsend main8. 以10进制形式显示内存中一有符号字节数据例:var db 0ffH屏幕应显示:The result is: -1data segment paravar db 7fhstr1 db 0dh, 0ah, ‘The result is: ’buf db 4 dup(‘’)db ‘$’data endsss_seg segment stackdw 100 dup(0)ss_seg endscode segment paraassume cs:code, ds:data, ss:ss_segmain proc farmov ax, datamov ds, axmov buf, ‘+’cmp var, 0 ;判断var是正数,还是负数jge nextmov buf, ‘-‘neg var ;若var为负,则得到其相反数next: mov al, varmov cx, 3mov dl, 10lea bx, buf+3main1: mov ah, 0div dl ; (AX / 10)商→ aladd ah, 30h ; (AX / 10)余数→ ahmov [bx], ahdec bxloop main1 ;循环3次,分别得到百、十、个位lea dx, str1 ;显示10进制数mov ah, 9int 21hexit: mov ax, 4c00hint 21hmain endpcode endsend main9. 将一个16位的无符号数var, 转换为非压缩格式BCD码,存放在内存中buf开始的单元中。

第三章8086微处理器指令系统习题答案

第三章8086微处理器指令系统习题答案

第三章8086微处理器指令系统习题答案一、单项选择题1.B2.C3.B4.D5.A6.C7.B8.C9.C10. D11.D12.C13.C14.A15.C16.B17.C18.B19.D20. D 21.B22.D23.A24.D25.A26.A27.A28.D29.C30. A 31.D32.C33.B34.D35.D36.D37.A38.B39.B40. B41.B42.A43.D44.D45.A46.C47.D48. C二、多项选择题1.ABC2.ABCD3.ABF4.BF5.BCD6.CD7.ABCDE8.BD三、填空题1.操作码,操作数2段地址,10H,偏移地址,02051H3.AA92AH4.立即,基址变址5.5425H6.D36AH7.源操作数为8位,目的操作数为16位,不匹配;源操作数和目的操作数不能同时为存储器;INC指令操作数不能为立即数;目的操作数的的地址大于字节。

8.6310H9.0132H,0112H10.0000H,1,1,0,011.1202H,1200H,2000H12.除413.7230H14.12AAH,0BBCCH15.6804H16.3,017.4154H,6F30H18.0,00FFH,0四、判断题×V ××V ××V ×V××××V ×V ×××五、读程序,指出结果1.11H2.5678H,1234H3.80H,04.1,15. 16.0132H,0112H7.01H,00H,08H8.0,09.79H,6H,7FH10.60H,35H11.37H,LAB2六、问答题3.(1) CF=0;ZF=0;PF=1;OF=0 (2) CF保持;ZF=0;PF=0;OF=0(3)CF=0;ZF=0;PF=0;OF=0 (4) PF=14. 解:5. 解:这两条指令的区别是,指令“MOV EAX,[ESI]”是将内存单元DS:[ESI]中的内容读到CPU中的寄存器EAX;而指令“MOV [ESI],EAX”是将CPU中寄存器EAX中的内容写入内存单元DS:[ESI]。

MCS_8086习题4_答案

MCS_8086习题4_答案

习题4:1. 请查询一款符合以下要求的存储器芯片(厂家、型号不限),并打印其引脚图和内部逻辑图。

SRAM或DRAM,若为DRAM要求芯片本身能够实现自动刷新;具有至少1M个存储单元;每个存储单元宽度为16位;工作频率至少大于60MHz;供电采用3.3V单电源供电;答:HY57V641620,4*1M*16 SDRAM(芯片资料见“部分习题答案附件”文件夹中HY57V641620.pdf)2. IBM-PC/XT计算机扩展槽上与存储器连接的总线信号为20根地址线A19~A0,8根数据线D7~D0以及控制信号MEMR和MEMW。

使用这些信号扩展1片2716(2K×8 EPROM)和1片6116(2K×8 RAM)。

要求EPROM的起始地址为C0000H,RAM紧随其后,使用74LS138,采用全地址译码方式。

试画出计算机的存储器连接图(门电路自选)。

并写出各存储器的地址范围。

答:地址范围2716:C0000H ~ C07FFH6116:C0800H ~ C0FFFH地址译码:●系统地址总线A0 ~ A10连接到2716和6116的地址输入引脚A0~A10用作存储器内部译码;●系统地址总线A19和A18连接到与门,与门输出连接到74LS138的G1引脚;●系统地址总线A17、A16连接到或门,或门输出连接到74LS138的/G2A;●系统地址总线A15、A14连接到或门,或门输出连接到74LS138的/G2A;●系统地址总线A13、A12、A11分别连接到74LS138的C、B、A三个引脚;●74LS138的输出/Y0连接到2716的片选端/CS,输出/Y1连接到6116的片选端/CS;●/MEMR和/MEMW分别连接到6116的输出允许端/OE引脚和写允许端/WE引脚;●/MEMR连接到2716的输出允许端/OE引脚;●系统数据总线D7~D0分别连接到2716和6116的数据输出引脚D7~D0上。

8086第三章习题

8086第三章习题

一、编程题1、编程,将两个十进制数X=87、Y=36相加,结果仍为十进制数,存放在SUM 为首地址的内存单元中(只写出代码段)。

2、给定数据段数据如下,其中第一个数为数据的个数。

编程,求出其中的最大数和最小数。

DATA SEGMENTARR DW 10,3,20,500,234,56,-32,45H,0F3H,0MAXAY DW ?MINAY DY ?DATA ENDS3、编程,将AL寄存器中的无符号数乘以18。

4、自0500H单元开始,有10个无符号字节数,编一个程序求这10个数的和。

要求把和放到050AH、050BH单元中。

(只写出代码段)5、编一个程序,把自1000H单元开始的100个数传送到1070H 开始的存储区中。

二、指出下列指令的错误:(1)MOV DS,5000H(2)SHR AX,3(3)MOV CS,AX(4)MOV BYTE PTR[BX],200H(5)XCHG BX,IP(6)MOV [BX],[1000](7)IN BX,DX(8)PUSH AL三、读程序后写出程序执行结果1.读下面程序段,确定其结果:XOR AX,AXDEC AXMOV BX,6378HXCHG AX,BXNEG BXAX寄存器的内容为H、BX寄存器的内容为H。

2.读下面程序段,确定其结果:MOV AL,45HMOV BH,ALAND BH,0FHMOV CL,4SHR AL,CLMOV BL,ALBH寄存器的内容为H、BL寄存器的内容为H。

3.读下面程序段,确定其结果:MOV AX,0A0BHSUB AX,0FFHAND AX,00FFHMOV CL,3SAL AL,CLADD AL,25HXCHG AL,AHPUSH AXPOP BXINC BLMUL BLHLT程序执行结束后AX= ;BX= 。

四、请写出如下程序段中每条算术指令执行后标志CF、ZF、SF、PF和AF的状态:MOV AL,89HADD AL,ALADD AL,9DHCMP AL,0BCHSUB AL,ALDEC ALINC AL。

新编16 32位微型计算机原理及应用答案(第五版)_第三章参考答案

新编16 32位微型计算机原理及应用答案(第五版)_第三章参考答案

第三章 8086/8088微处理器及其系统 教材习题3.1-3.70参考答案3.1 为什么要研究8086/8088微处理器及其系统?这比直接研究32位微处理器及其系统有何优缺点?解:尽管8086/8088后续的80286、80386、80486以及Pentium系列CPU结构和功能已发生很大变化,但从基本概念与结构以及指令格式上来讲,他们仍然是经典的8086/8088CPU的延续与提升。

3.2 8086 CPU有多少根数据线和地址线?它能寻址多少内存地址单元和I/O端口?8088CPU又有多少根数据线和地址线?为什么要设计8088CPU?解:8086 CPU有16根数据线和20根地址线,可寻址1MB存储单元和64KB的I/O端口。

8088 CPU 有16位内部数据线和8条外部数据总线,20根地址线。

8088 CPU 是8086 CPU的向下兼容版,这样设计主要为了与INTEL原有的8位外围接口芯片直接兼容。

3.3 8086 CPU内部按功能可分为哪两大部分?他们各自的主要功能是什么?解:从功能上讲,8086可分为两个部分,即总线接口单元(bus interface unit,BIU)和执行单元(execution unit ,EU)。

总线接口单元(BIU)的功能是负责CPU与存储器或I/O设备之间的数据传送。

EU的功能只是负责执行指令;执行的指令从BIU的指令队列缓冲器中取得,执行指令的结果或执行指令所需要的数据,都由EU向BIU发出请求,再由BIU经总线控制电路对存储器或外设存取。

3.4 8086 CPU内部的总线接口单元BIU由哪些功能部件组成?他们的基本操作原理是什么?解:BIU内有4个16位的段地址寄存器CS、DS、SS和ES,16位指令指针IP,6字节指令队列缓冲器,20位地址加法器和总线控制电路。

基本操作原理是BIU要从内存取指令送到指令队列缓冲器;CPU执行指令时,总线接口单元要配合执行单元从指定的内存单元或者外设端口中取数据,将数据传送给执行单元,或者把执行单元的操作结果传送到指定的内存单元或外设端口中。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

习题3:
1. 有2个4字节无符号数分别存放在扩展段2000H 和3000H 开始的单元中,
低位在前,高位在后,将两数相加,结果存放在数据段2000H 开始的单元中,请编写程序段完成以上功能;
2. 8086系统中,请说明下列指令的源操作数的寻址方式是什么?
1)MOV AX, 1234H 立即数寻址 2)MOV AX, [1234H] 直接寻址 3)MOV AX, [BX]
寄存器间接寻址 4)MOV AX, 1234H[BX + SI] 相对基址变址寻址 5)MOVSB
数据串寻址 6)IN AL, DX
I/O 端口间接寻址
3. 请在下表中画出下列数据段以十六进制表示的各单元值(表格中每个单元表
示一个字节),并写出变量var1, var2, var3的偏移地址和cnt 的值。

data SEGMENT para ORG 30H
var1 DB -2, ‘A ’, 2 dup(‘23’) var2 DW -1 cnt EQU $-var1 var3 DW var2 data ENDS
var1: 0030H
var2:0036H
var3:0038H
cnt = 8
4. 以下程序实现将变量var 进行var*10+600的操作,并将计算结果保存在变
量result 中,当程序执行到地址M5的时候,请在以下表格中画出当前堆栈指针的位置和堆栈里的内容(程序断点可以用标号,在堆栈中可用寄存器名代表保存的内容,SS 的内容不用指定,表格的每个单元表示一个字)。

(6分)
data segment
var dw 1000
低地址
高地址
0030H
FEH 41H
32H 33H 32H 33H FFH FFH 36H 00H
result dd ?
data ends
sseg segment stack
db 100 dup(?)
sseg ends
code segment
assume cs:code, ds:data, ss:ss_seg main proc far
push ds
mov ax, 0
push ax
mov ax, data
mov ds, ax
mov ax, var
M1: c all Caculate
M2: d w 10
M3: d w 600
M4: l ea bx, result
mov [bx], ax
mov [bx+2], dx
ret
main endp
Caculate proc
push bp
mov bp, sp
push si
push bx
mov bx, [bp+2]
mov si, cs:[bx]
高地址
低地址DS
M2
BP
SI
BX
mul si
M5: a dd ax, cs:2[bx]
adc dx, 0
add bx, 4
mov [bp+2], bx
pop bx
pop si
pop bp
ret
Caculate endp
code ends
end main
5. 问答题
1)若AL = 81H,则执行指令CBW后AH的内容为多少?AH = 0FFH
2)若BL = BEH,执行下列指令序列,则每执行一步,BL和CF的值为多少?
SHL BL, 1 ;BL = __7CH___, CF = ___1___
MOV CL, 2
SHR BL, CL ; BL = __1FH___, CF = ___0___
OR BL, 80
SAR BL, 1 ; BL = __CFH___, CF = ___1___
ROR BL,CL ; BL = __F3H___, CF = ___1___
INC CL
RCL BL, CL ;BL = __9FH___, CF = ___1___
3)什么是短跳转、近跳转、远跳转?
短跳转:段内直接跳转,偏移量为-128~127
近跳转:段内直接跳转,偏移量为-32768~32767
远跳转:段间直接跳转
4)若当前SP = 1000H,CS = B000H ,IP = 0100H,且当前FLAG = 2345H,则执行指令INT 21H以后,SP的值变为多少?堆栈段中6个存储单元
0FFFH、0FFEH、0FFDH、0FFCH、0FFBH、0FFAH的值分别是多少?
SP = 0FFAH,(0FFFH) = 23H (0FFEH) = 45H
(0FFDH) = B0H (0FFCH) = 00H
(0FFBH) = 01H (0FFAH) = 00H
6. 请写出程序段实现下列功能
例如:从160H端口读取1个字节
MOV DX, 160H
IN AL, DX
1)将一个8位数20H写入到地址为20H的端口;
MOV AL, 20H
OUT 20H, AL
2)若AL = 56H,BL = 57H,将这两个压缩格式BCD码相加并将结果保存到存储单元[2000H]中;
ADD AL, BL
DAA
MOV [2000H], AL
3)将2个32位无符号数DAT1和DAT2相乘,结果保存在64位无符号数中,请编写程序段。

DAT1 DD 12345678H
DAT2 DD 9ABCDEFH
RESULT DQ 0
MOV AX, word ptr DAT2 ;(DAT1)L * (DAT2)L
MUL word ptr DAT1
MOV word ptr RESULT, AX
MOV word ptr RESULT, DX ;保存结果
MOV AX, word ptr DAT2
MUL word ptr DAT1 + 2 ;(DAT1)H * (DAT2)L
ADD word ptr RESULT + 2, AX
ADC word ptr RESULT + 4, 0
MOV AX, word ptr DAT2 + 2 ;(DAT1)L * (DAT2)H
MUL word ptr DAT1
ADD word ptr RESULT + 2, AX
ADC word ptr RESULT + 4, DX
ADC word ptr RESULT + 6, 0
MOV AX, word ptr DAT2 + 2 ;(DAT1)H * (DAT2)H
MUL word ptr DAT1 + 2
ADD word ptr RESULT + 4, AX
ADC word ptr RESULT + 6, DX
4)求数据段偏移地址为1000H开始的一个字符串的长度,字符串以ASCII码0为结束符,长度要求包括结束符;(提示:初始化AL = 0 CX = 0FFFFH,然后使用REPNZ SCASB命令,最后根据CX的值计算字符串长度)
MOV AX, DS
MOV ES, AX
MOV DI, 1000H
MOV AL, 0
MOV CX, 0FFFFH
CLD
REPNZ SCASB
NOT CX ;或者MOV AX, 0FFFFH
; SUB AX, CX
; MOV CX, AX ;此时CX中存放的就是字符串的长度
7. 请判断以下8086汇编指令是否正确,正确则在指令前打√,错误则打×( ) 1) MOV DS, 1000H ( ) 18) LEA [1000H], MSG
(√) 2) MOV DX, 1000H ( ) 19) LDS ES, MSG
( ) 3) MOV IP, AX (√) 20) LES DX, MSG
( ) 4) MOV [1000H], [SI] ( ) 21) ADD DS, 1000H
(√) 5) PUSH [SI] (√) 22) ADC DX, [DI]
( ) 6) PUSH AL (√) 23) SUB [BX], 1000H
( ) 7) PUSH 200H ( ) 24) SUB [BX + BP], 1000H ( ) 8) POP CS ( ) 25) IMUL 100H
(√) 9) POP AX (√) 26) DIV word ptr 100H[BP] ( ) 10) XCHG AX, DS (√) 27) AND BP, 1001H
( ) 11) XCHG AX, 1000H[SI + DI] (√) 28) SHL [BX], 1 (编译时会警告)( ) 12) IN AX, [SI] ( ) 29) ROR AX, 4
( ) 13) IN BL, 80H (√) 30) RCL word ptr [BX], CL ( ) 14) IN AX, 160H ( ) 31) SAR dword ptr [BX], CL (√) 15) IN AL, DX (√) 32) MOVSW
() 16) OUT AL, DX (√) 33) REPNZ SCASB
(√) 17) OUT 80H, AL ( ) 34) RETI
以上除了打√的指令外,其余指令全部为×。

相关文档
最新文档