微机原理及应用习题库与答案--参考_第1页
微机原理及应用习题库与答案--参考_第2页
微机原理及应用习题库与答案--参考_第3页
微机原理及应用习题库与答案--参考_第4页
微机原理及应用习题库与答案--参考_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第 1 章 绪论1. 运算机分那几类?各有什么特点?答:传统上分为三类:大型主机、小型机、微型机;大型主机一般为高性能的并行处理系统,储备容量大, 事物处理才能强, 可为众多用户供应服务; 小型机具有肯定的数据处理才能,供应肯定用户规模的信息服务, 作为部门的信息服务中心; 微型机一般指在办公室或家庭的桌面或可移动的运算系统,体积小、价格低、具有工业化标准体系结构,兼容性好;2. 简述微处理器、微运算机及微运算机系统三个术语的内涵;答:微处理器是微运算机系统的核心硬件部件,对系统的性能起打算性的影响;微运算机包括微处理器、储备器、 i/o 接口电路及系统总线;微运算机系统是在微运算机的基础上配

2、上相应的外部设备和各种软件,形成一个完整的、独立的信息处理系统;3. 80x86 微处理器有几代?各代的名称是什么?答:从体系结构上可分为3 代:8080/8085:8 位机;8086/8088/80286:16 位机;80386/80486:32 位机;第 2 章 微处理器结构及微运算机的组成18086 是多少位的微处理器?为什么?答: 8086 是 16 位的微处理器,其内部数据通路为16 位,对外的数据总线也是16 位;2eu 与 biu 各自的功能是什么?如何协同工作?答: eu 是执行部件,主要的功能是执行指令; biu 是总线接口部件,与片外储备器及 i/o 接口电路传输数据; e

3、u 经过 biu 进行片外操作数的拜访, biu 为 eu 供应将要执行的指令; eu 与 biu 可分别独立工作,当 eu 不需 biu 供应服务时, biu 可进行填充指令队列的操作;38086/8088 与其前一代微处理器8085 相比,内部操作有什么改进?答:8085 为 8 位机,在执行指令过程中 ,取指令与执行执令都是串行的;8086/8088 由于内部有 eu 和biu 两个功能部件,可重叠操作,提高了处理器的性能;48086/8088 微处理器内部有那些寄存器,它们的主要作用是什么?答:执行部件有8 个 16 位寄存器, ax 、bx 、cx 、dx 、sp、bp、di 、si

4、;ax 、bx 、cx、dx 一般作为通用数据寄存器;sp为堆栈指针存器, bp、di 、si 在间接寻址时作为地址寄存器或变址寄存 器;总线接口部件设有段寄存器cs、ds、ss、es 和指令指针寄存器ip;段寄存器存放段地址,与偏移地址共同形成储备器的物理地址;ip 的内容为下一条将要执行指令的偏移地址,与 cs 共同形成下一条指令的物理地址;58086 对储备器的治理为什么采纳分段的方法?答: 8086 是一个 16 位的结构,采纳分段治理方法可形成超过16 位的储备器物理地址,扩大对储备器的寻址范畴1mb ,20 位地址 ;如不用分段方法, 16 位地址只能寻址64kb 空间;6在 80

5、86 中,规律地址、偏移地址、物理地址分别指的是什么?详细说明;答:规律地址是在程序中对储备器地址的一种表示方法,由段地址和段内偏移地址两部分组成,如1234h:0088h;偏移地址是指段内某个储备单元相对该段首地址的差值,是一个 16 位的二进制代码;物理地址是 8086 芯片引线送出的20 位地址码,用来指出一个特定的储备单元; 7给定一个存放数据的内存单元的偏移地址是20c0h,(ds)=0c00eh,求出该内存单元的物理地址;答:物理地址: 320f8h;88086/8088 为什么采纳地址 /数据引线复用技术?答:考虑到芯片成本, 8086/8088 采纳 40 条引线的封装结构;

6、40 条引线引出 8086/8088 的全部信号是不够用的,采纳地址/数据线复用引线方法可以解决这一冲突,从规律角度,地址与数据信号不会同时显现,二者可以分时复用同一组引线;98086 与 8088 的主要区分是什么?答: 8086 有 16 条数据信号引线, 8088 只有 8 条; 8086 片内指令预取缓冲器深度为6 字节, 8088 只1有 4 字节;10怎样确定 8086 的最大或最小工作模式?最大、最小模式产生掌握信号的方法有何不同答:引线 mn/mx# 的规律状态打算8086 的工作模式, mn/mx# 引线接高电平, 8086 被设定为最小模式, mn/mx# 引线接低电平,

7、8086 被设定为最大模式;最小模式下的掌握信号由相关引线直接供应;最大模式下掌握信号由8288 专用芯片译码后供应, 8288的输入为 8086 的 s2#s0#三条状态信号引线供应;118086 被复位以后,有关寄存器的状态是什么?微处理器从何处开头执行程序?答:标志寄存器、 ip、ds、ss、es 和指令队列置 0,cs 置全 1;处理器从 ffffoh 储备单元取指令并开头执行;128086 基本总线周期是如何组成的?各状态中完成什么基本操作?答:基本总线周期由 4 个时钟 clk 周期组成, 按时间次序定义为 t1、t2、t3、t4;在 t1 期间 8086 发出拜访目的地的地址信号

8、和地址锁存选通信号 ale ;t2 期间发出读写命令信号 rd#、wr#及其它相关信号; t3 期间完成数据的拜访; t4 终止该总线周期;13结合 8086 最小模式下总线操作时序图,说明ale 、m/io# 、dt/r#、rd#、ready 信号的功能;答: ale 为外部地址锁存器的选通脉冲,在t1 期间输出; m/io# 确定总线操作的对象是储备器仍是i/o 接口电路,在 t1 输出; dt/r# 为数据总线缓冲器的方向掌握信号,在 t1 输出; rd#为读命令信号;在 t2 输出; ready 信号为储备器或 i/o 接口“预备好”信号,在 t3 期间给出,否就 8086 要在 t3

9、 与 t4 间插入 tw 等待状态;148086 中断分哪两类? 8086 可处理多少种中断?答: 8086 中断可分为硬件中断和软件中断两类;8086 可处理 256 种类型的中断; 158086 可屏蔽中断恳求输入线是什么?“可屏蔽”的涵义是什么?答:可屏蔽中断恳求输入线为intr ;“可屏蔽”是指该中断恳求可经软件清除标志寄存器中if 位而被禁止;168086 的中断向量表如何组成?作用是什么?答:把内存 0 段中 03ffh 区域作为中断向量表的专用储备区;该区域存放 256 种中断的处理程序的入口地址,每个入口地址占用4 个储备单元,分别存放入口的段地址与偏移地址;178086 如何

10、响应一个可屏蔽中断恳求?简述响应过程;答:当 8086 收到 intr 的高电平信号时,在当前指令执行完且if=1 的条件下, 8086 在两个总线周期中分别发出inta# 有效信号;在其次个inta# 期间, 8086 收到中断源发来的一字节中断类型码;8086 完成爱护现场的操作, cs、ip 内容进入堆栈,请除 if、tf;8086 将类型码乘 4 后得到中断向量表的入口地址,从今地址开头读取 4 字节的中断处理程序的入口地址, 8086 从今地址开头执行程序,完成了 intr 中断恳求的响应过程;18什么是总线恳求? 8086 在最小工作模式下,有关总线恳求的信号引脚是什么?答:系统中

11、如存在多个可掌握总线的主模块时,其中之一如要使用总线进行数据传输时,需向系统恳求总线的掌握权,这就是一个总线恳求的过程;8086 在最小工作模式下有关总线恳求的信号引脚是hold 与 hlda ;19简述在最小工作模式下,8086 如何响应一个总线恳求?答:外部总线主控模块经hold 引线向 8086 发出总线恳求信号; 8086 在每个时钟周期的上升沿采 样 hold 引线;如发觉 hold=1 就在当前总线周期终止时t4 终止发出总线恳求的响应信号hlda ;8086 使地址、数据及掌握总线进入高阻状态,让出总线掌握权,完成响应过程;20在基于 8086 的微运算机系统中,储备器是如何组织

12、的?是如何与处理器总线连接的?bhe# 信号起什么作用?答:8086 为 16 位处理器, 可拜访 1m 字节的储备器空间; 1m 字节的储备器分为两个512k 字节的储备体,命名为偶字节体和奇字节体;偶体的数据线连接d7d0,“体选”信号接地址线a0;奇体的2数据线连接 d15d8,“体选”信号接bhe#信号; bhe#信号有效时答应拜访奇体中的高字节储备单元,实现 8086 的低字节拜访、高字节拜访及字拜访;21“ 80386 是一个 32 位微处理器”,这句话的涵义主要指的是什么?答:指 80386 的数据总线为 32 位,片内寄存器和主要功能部件均为32 位,片内数据通路为32 位;2

13、280x86 系列微处理器实行与从前的微处理器兼容的技术路线,有什么好处?有什么不足?答:好处是从前开发的软件可以在新处理器组成的系统中运行,爱护了软件投资; 缺点是处理器的结构进展受到兼容的约束,为了保持兼容性增加了硅资源的开销,增加了结构的复杂性;2380386 内部结构由哪几部分组成?简述各部分的作用;答: 80386 内部结构由执行部件 eu 、储备器治理部件 mmu 和总线接口部件 biu 三部分组成; eu包括指令预取部件、指令译码部件、掌握部件、运算部件及爱护检测部件,主要功能是执行指令;存 储器治理部件包括分段部件、分页部件, 实现对储备器的分段分页式的治理,将规律地址转换成物

14、理地址;总线接口部件作用是进行片外拜访:对储备器及i/o 接口的拜访、预取指令;另外的作用是进行总线及中断恳求的掌握2480386 有几种储备器治理模式?都是什么?答: 80386 有三种储备器治理模式,分别是实地址方式、爱护方式和虚拟8086 方式 25在不同的储备器治理模式下,80386 的段寄存器的作用是什么?答:在实地址方式下,段寄存器与8086 相同,存放段基地址;在爱护方式下,每个段寄存器仍有一个对应的 64 位段描述符寄存器, 段寄存器作为挑选器存放挑选符;在虚拟 8086 方式下, 段寄存器的作用与 8086 相同;26试说明虚拟储备器的涵义,它与物理储备器有什么区分?8038

15、6 虚拟地址空间有多大?答:虚拟储备器是程序员面对的一个庞大的、可寻址的储备空间, 这个空间是内存与外存联合形成的,在操作系统的治理下, 程序可象拜访内存一样去拜访外存而获得所需数据;物理储备器是指机器实际拥有的内储备器,不包括外存;80386 的虚拟地址空间为64tb 大; 27试说明描述符的分类及各描述符的作用;答:描述符分为三类:储备器段描述符、系统段描述符、门描述符;储备器段描述符由8 字节组成,它用来说明一个段中储存信息的情形;32 位段基地址和 20 位段界限值定位了该段在储备空间中的位置,其它有关位打算拜访权限及段的长度单位;系统段描述符与储备器段描述符大多数字节段相同, 有关拜

16、访权及属性字节段有些不同;门描述符用来转变程序的特权级别、切换任务的执行以及指出中断服务程序的入口;28描述符表的作用是什么?有几类描述符表?答:描述符表次序存放一系列描述符,描述符表定义了在80386 系统中被使用的全部储备器段;有3类描述符表,即全局描述符表、局部描述符表及中断描述符表;2980386 的分段部件是如何将规律地址变为线性地址的?答:分段部件依据段挑选符从全局描述符表或局部描述符表中取出对应的段描述符;把段描述符32位段基地址与规律地址中的32 位偏移量相加就形成了线性地址; 3080386 中如何把线性地址变为物理地址?答:分段部件形成的32 位线性地址中高10 位作为寻址

17、页目录表的偏移量,与掌握寄存器cr3 中页目录表基地址共同形成一个32 位的地址指向页表中的一个页项,即为一个页面描述符;该页面项中 高 20 位作为页面基地址,线性地址的低12 位为偏移量,相加后形成指向某一储备单元的32 位物理地址;如禁止分页功能,线性地址就是物理地址;3180386 对中断如何分类?答: 80386 把中断分为外部中断和内部中断两大类,外部中断经nmi和 intr 引线输入恳求信号;内部中断也叫内部反常中断,分为陷阱中断、内部故障反常中断、反常终止中断;3280386 在爱护方式下中断描述符表与8086 的中断向量表有什么不同?答: 8086 工作在实地址方式,向量表是

18、在储备器的0 段中最低 1024 字节内存中; 80386 在爱护方式3下要通过中断描述符表中的描述符拜访虚拟空间的中断向量,中断描述符表的位置不是固定的,要由idtr 寄存器实现在虚拟空间的定位;33简述 80386 在爱护方式下的中断处理过程;答: 80386 响应中断后,接收由中断源供应的类型码并将其乘8,与 idtr 寄存器中基地址相加,指出中断描述符的位置,读出中断描述符,依其中的段挑选符及条件打算从两个描述符表ldt 或 gdt中的一个得到段描述符,形成中断服务程序入口所在储备器单元的线性地址;第 3 章 8086 指令系统及寻址方式1. 依据以下要求编写一个汇编语言程序::(1)

19、 ) 代码段的段名为cod_sg(2) ) 数据段的段名为dat_sg(3) ) 堆栈段的段名为stk_sg(4) ) 变量 high_dat 所包含的数据为95(5) ) 将变量 high_dat 装入寄存器 ah ,bh 和 dl(6) ) 程序运行的入口地址为start答案:dat_sgsegemnt high_datdb95dat_sgends;stk_sgsegment dw64 dup.stk_sgends;cod_sgsegment mainprocfarassumecs: cod_sg, ds: dat_sg, ss: stk_sg start: movax, dat-sgmo

20、vds, axmovah, high_dat movbh, ahmovdl, ah movah, 4ch int21hmainendp cod_sg endsendstart2. 指出以下程序中的错误:staksgsegmentdb 100 dup.sta_sg ends dtseg segment data1 db .dtseg end cdseg segment mainprocfarstart: movds,datseg moval,34haddal,4fh4movdata,al start endpcdseg endsend答案:改正后 :staksgsegment db100 dup

21、.staksgends dtsegsegmentdata1db .dtsegendscdsegsegmentmainprocfarassume cs: cdseg, ds: dtseg, ss: staksg start:movax, dtsegmovds, axmoval, 34haddal, 4fh movdata1, al movah, 4ch int21hmainendp cdseg endsends3. 将以下文件类型填入空格:1 .obj2 .exe3 .crf4 .asm5 .lst6 .map编辑程序输出的文件有 ;_汇编程序输出的文件有 ;_连接程序输出的文件有 ;_答案:编

22、辑程序输出文件 : 4汇编程序输出文件 : 1, 3, 5连接程序输出文件 : 2, 64. 以下标号为什么是非法的 .(1) get.data 2 1_num 3 test-data 4 ret 5 new item答案:非法标号 :1由于 .只答应是标号的第一个字符2第一个字符不能为数字3不答应显现 - 4不能是保留字 ,如助记符5不能有空格5. 下面的数据项定义了多少个字节?data_1db 6 dup4 dup0ffh答案:24 字节6. 对于下面两个数据段,偏移地址为10h 和 11h 的两个字节中的数据是一样的吗?为什么? dtseg segment|dtseg segmentor

23、g10h|org10hdata1db 72h|data1dw 7204h db 04h|dtseg ends5dtseg ends|答案:不一样 . 分别是 72h, 04h 和 04h, 72h. 储备字时低 8 位存在低字节 ,高 8 位存在高字节 .7. 下面的数据项设置了多少个字节.(1) asc_datadb 12342 hex_datadb1234h答案 1 设置了 4 个字节2 设置了 2 个字节8. 执行以下指令后 , ax 寄存器中的内容是什么 . tabledw 10,20,30,40,50entry dw 3movbx,offset tableaddbx,entrymov

24、ax,bx答案: ax=409. 指出以下指令的错误 :1 movah,bx2 movsi,bx3 movax,sidi4 movax,bxbp5 movbx,es:ax6 movbyte ptrbx,10007 movax,offset si8 movcs,ax9 movds,bp答案:1源、目的字长不一样(2) 源、目的不能同时为存贮器寻址方式(3) 基址变址方式不能有si 和 di 的组合(4) 基址变址方式不能有bx 和 bp 的组合(5) 在 8086 寻址方式中, ax不能作为基址寄存器使用,而且源、目的不能同时为存贮器寻址方式(6) 1000 超出一个字节的表数范畴(7) off

25、set 只用于简洁变量,应去掉(8) cs 不能作为目的寄存器(9) 段地址不能直接送入数据段寄存器10. datasegment table_addrdw 1234h dataendsmovbx, table_addrleabx, table_addr请写出上述两条指令执行后, bx 寄存器中的内容; 答案:movbx,table_addr; 执行后 bx=1234hleabx,table_addr; 执行后 bx=offset table_addr11. 设ds=1b00h,es=2b00h,有关储备器地址及其内容如右图所示,请用两条指令把x 装入 ax 寄存器;1b00:2000h1b0

26、0:2002h8000h2b00h.x2b00:8000h6答案:lesbx, 2000h movax, es: bx12. 变量 datax 和 datay 定义如下 :dataxdw0148hdw2316h dataydw0237hdw4052h按下述要求写出指令序列:1datax和 datay 中的两个字数据相加 , 和存放在 datay 和 datay+2 中;2datax和 datay 中的两个双字数据相加, 和存放在 datay 开头的字单元中;3datax和 datay 两个字数据相乘(用mul ) ;4datax和 datay 两个双字数据相乘(用mul ) ;5datax除以

27、 23(用 div );6datax双字除以字 datay (用 div );答案:1 movax, datax addax, dataymovbx, datax+2addbx, datay+2 movdatay, ax movdatay+2, bx(2) movax, datax adddatay, ax movax, datax+2 adcdatay+2, ax(3) movax, datax muldataymovdatay,ax movdatay+2,dx 4mov ax,word ptr datax mov bx,word ptr datay mul bxmovresult,ax m

28、ovresult+2,dxmovax,word ptr datax movax,word ptr datay+2 mulbxaddresult+2,ax adcresult+4,dxmovax,word ptr datax+2 movbx,word ptr datay mulbxaddresult+2,ax adcresult+4,dxmovax,word ptr datax+2 movbx,word ptr datay+27mulbxaddresult+4,ax adcresult+6,dx(5) movax, datax movbl, 23divblmovbl,ahmovah, 0movd

29、atay, ax;存放商 moval,blmovdatay+2, ax;存放余数(6) movax, datax movdx, datax+2 divdataymovdatay, ax movdatay+2, dx13. 试分析下面的程序段完成什么操作?movcl,04shldx,clmovbl,ahshlax,clshrbl,cl ordl,bl答案:将 dx: ax 中的双字左移 4 位(乘 16)14. 用其他指令完成和以下指令一样的功能:(1) rep movsb2 rep lodsb3 rep stosb4 rep scasb答案:(1) loop1:moval,byte ptr s

30、imoves:byte ptr di, alincsi或: decsiincloopdiloop1或: decdi(2) loop1:moval, byte ptr siincloopsi或: decloop1si(3) loop1:moves:byte ptr di, al incdi或: decdilooploop1(4) loop1:cmpal,es:byte ptr di jeexitincdi或: decdi looploop1exit:815. 编写程序段 , 比较两个 5 字节的字符串 olds 和 news,假如 olds 字符串与 news 不同, 就执行 new_less,

31、否就次序执行程序;答案:leasi, olds leadi, newsmovcx, 5cldrepzcmpsb jnznew_less16. 假定 ax 和 bx 中的内容为带符号数 , cx 和 dx 中的内容为无符号数 , 请用比较指令和条件转移指令实现以下判定 :(1) 如 dx 的值超过 cx 的值,就转去执行 exceed(2) 如 bx 的值大于 ax 的值,就转去执行 exceed(3) cx 中的值为 0 吗. 如是就转去执行 zero(4) bx 的值与 ax 的值相减 , 会产生溢出吗 . 如溢出就转 overflow(5) 如 bx 的值小于 ax 的值,就转去执行 eq

32、_sma(6) 如 dx 的值低于 cx 的值,就转去执行 eq_sma答案:1 cmpdx, cx jaexceed(2) cmp bx, axjgexceed(3) cmp cx, 0 jezero(4) sub bx, axjooverflow(5) cmp bx, ax jleq_sma(6) cmp dx, cxjbeq_sma17. 假如在程序的括号中分别填入指令:(1) loopl202 loopnel203 loopel20试说明在三种情形下 , 当程序执行完后 , ax 、bx 、cx、dx 四个寄存器的内容分别是什么.titleexloop.com codesgsegmen

33、tassumecs:codesg, ds:codesg. ss:codesgorg100hbegin: movax,01movbx,02movdx,03movcx,04l20:incaxaddbx,axshrdx,1retcodesgends答案:endbegin9(1)(ax )= 5(bx )= 16(cx )= 0(dx )= 0(2)( ax ) = 2(bx ) = 4( cx) = 3( dx )= 1(3)( ax ) = 3(bx ) = 7( cx) = 2( dx )= 018. 变量 n1 和 n2 均为 2 字节的非压缩 bcd 数码,请写出运算n1 与 n2 之差的指

34、令序列;答案:movax, 0 moval, n1+1 subal, n2+1 aasmovdl, almoval, n1sbbal, n2 aasmovdh, al19. 有两个 3 位的 ascii 数串 asc1 和 asc2 定义如下 : asc1db 578asc2db 694 asc3db 0000请编写程序运算 asc3 asc1+asc2;答案:clcmovcx, 3movbx, 2 back:mov al, asc1bx adc al, asc2bx aaaorasc3bx+1, aldecbx loopback rclcx, 1orasc3bx, cl20.假设cs=300

35、0h, ds=4000h, es=2000h, ss=5000h, ax=2060h,bx=3000h,cx=5, dx=0,si=2060h,di=3000h,43000h=0a006h,23000h=0b116h,33000h=0f802h,25060=00b0h,.sp=0fffeh, cf=1, df=1,请写出以下各条指令单独执行完后, 有关寄存器及储备单元的内容 , 如影响条件码请给出条件码sf、zf、of、cf 的值;(1) sbb ax,bx2 cmp a x,word ptrsi+0fa0h3 mulbyte ptrbx4 aam5 div bh6 sar ax,cl107

36、xor a x,0ffe7h8 rep stosb9 jmp word pyrbx10 xchgax,es:bx+si答案:1 ax=0f05fh, sf=1, zf=0, of=0, cf=12 sf=1, zf=0, of=1, cf=13 ax=0240h, of=1, cf=14 ax=0906h, sf=0, zf=05 ax=20ach6 ax=0103h, cf=07 ax=0df87h, cf=0, of=0, sf=1, zf=0 8 23000h23004h=60h,不影响标志位(9) ip=0a006h,不影响标志位10 ax=00b0h, 25060=2060h,不影响

37、标志位第 4 章 汇编语言程序设计基础1. 试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来;答案:abc:movah,1 int21hcmpal, ajbstopcmpal, zjastopsubal,20h movdl,almovah,2int21hjmpabc stop: ret2. 编写程序,比较两个字符串string1和 string2所含字符是否完全相同,如相同就显示 “ match ”,如不同就显示“ no match ”;答案:datarea segmentstring1string2dbdbasfioaxcviyoaf mess1db match , $me

38、ss2dbno match $, datarea ends prognamsegment mainprocfarassume cs:prognam,ds:datarea start:pushds11subax,axpushaxmovax,datareamovds,axmoves,ax begin:movcx, string2-string1movbx, mess1-string2 cmpbx,cxjnzdispnoleadx,addrleasi,string1leadi,string2repecmpsbjnedispnomovah,9 leadx,mess1int21hret dispno:m

39、ovah, 9 leadx, mess2int21hretmainendp prognamendsend start3. 试编写程序,要求从键盘输入3 个 16 进制数,并依据对3 个数的比较显示如下信息:(1)假如 3 个数都不相等就显示0;(2)假如 3 个数中有 2 个数相等就显示2;(3)假如 3 个数都相等就显示3;答案:datasegment arraydw3 dup. dataendscodesegmentmainproc farassume cs:code,ds:data start:pushdssubax,axpushaxmovax,datamovds,axmovcx,3le

40、asi,array begin:12pushcxmovcl,4movdi,4movdl, movah,02 int21hmovdx,0 input:movah,01 int21handal,0fhshldx,clordl,aldecdijneinputmovsi,dx addsi,2popcxloopbegin comp:leasi,array movdl,0movax,simovbx,si+2 cmpax,bxjnenext1adddl,2 next1:cmpsi+4,axjnenext2adddx,2 next2:cmpsi+4,bxjnenumadddl,2 num:cmpdx,3jld

41、ispmovdl,3disp:movah,2 adddl,30hint21h retmainendpcodeendsendstart4. 已知整数变量 a 和 b,试编写完成下述操作的程序:( 1)如两个数中有一个是奇数,就将该奇数存入a 中,偶数存入 b 中;( 2)如两个数均为奇数,就两数分别加1,并存回原变量;13( 3)如两个数均为偶数,就两变量不变;答案:dsegsegment adw.bdw.dsegendscsegsegment mainprocfar assume cs:cseg,ds:dseg start:pushdssubax,axpushaxmovax,dsegmovds

42、,axbegin:movax,amovbx,b xorax,bxtestax,0001jzclasstestbx,0001jzexitxchgbx,a movb,bx jmpexitclass:testbx,0001jzexitincbincaexit:retmainendp csegendsendstart5. 把 010010 之间的 30 个数,存入首地址为 grad 的字数组中, grad+i 表示学号为 i+1 的同学成果;另一个数组 rank 是 30 个同学的名次表, 其中 rank+i的内容是学号为i+1 的同学的名次; 试编写程序,依据grad 中的同学成果,将排列的名次填入

43、rank 数组中(提示:一个同学的名次等于成果高于这个同学的人数加1);答案:dsegsegment gradedw30 dup.rankdw30 dup. dsegendscsegsegment mainprocfarassume cs:cseg, ds:dseg, es:dsegstart:pushdssub pushax,ax axmovax,dseg14movds,axmoves,ax begin:movdi,0movcx,30 loop1:pushcxmovcx,30movsi,0movax,gradedimovdx,0 loop2:cmpgradesi,axjbego_onincd

44、xgo_on:addsi,2looploop2 popcxincdxmovrankdi,dx sdddi,2looploop1 retmainendp csegendsendstart6. 分析以下程序的功能,写出堆栈最满时各单元的地址及内容;ssegsegmentstack at1000h; 堆栈的段地址为1000h dw128 dup.toslabel wordssegends; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - dsegsegmentdw 32 d

45、up. dsegends; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -csegsegment mainprocfarassumecs:cseg, ds:dseg,ss:ssegstart: movax,sseg movss,axmovax,dsegmovds,axmovax,4321h callhtoaretn:movah,4ch int21hmainendp; - - - - - - - - - - - - - - - - - - - - - - - - -

46、 - - - - - - - - - - - - - - - - - - - - htoaprocnearjleb1pushaxpushbpmovbp,spmovbx,bp+2andbx,0fhmovbp+2,bx15cmpax,15popbpmovcl,4shrax,cl callhtoab1:popaxb2:addal,30h jlprtaddal,07prt:movdl,al movah,2int21h rethtoaendpcsegends; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

47、- - - - - - - - - endstart答案:1000:0f2hb11000:0f4h31000:0f6hb11000:0f8h21000:0fahb11000:0fch11000:0fehretn1000:100h7. 写出安排给以下中断类型号在中断向量表中的物理地址;(1) int12h2int8答案:1 00048h2 00020h8. 试编写程序,它轮番测试两个设备的状态寄存器,只要一个状态寄存器的第0 位为 1,就与其相应的设备就输入一个字符;假如其中任一状态寄存器的第3 位为 1,就整个输入过程终止;两个状态寄存器的端口地址分别是0024 和 0036,与其相应的数据输

48、入寄存器的端口就为0026 和 0038,输入字符分别存入首地址为buff1 和 buff2 的储备区中;答案movsi, 0movdi, 0test12:inal, 0024htestal, 08jnzexitinal,0036htestal, 08jnzexitdev1:inal, 0024htestal, 01jzdev2inal, 0026hmovbuffersi, al16incsidev2:inal, 0036h testal, 01jztest12inal, 0038hmovbuff2di,al incdijmptest12 exit:ret9.给定( sp) =0100,ss=

49、0300,(flags )=0240,储备单元的内容为( 00020)=0040,(00022)=0100,在段地址为 0900 及偏移地址为 00a0 的单元中有一条中断指令int 8 ,试问执行 int 8 指令后, sp, ss,ip,flags 的内容是什么?栈顶的三个字是什么?答案:sp = 00fa ss = 0300ip = 0040flags = 0040堆栈内容 :00a1h0900h0240h10. 编写一个程序,接收从键盘输入的10 个十进制数字,输入回车符就停止输入,然后将这些数字加密后(用 xlat 指令变换)存入内存缓冲区buffer;加密表为 ;输入数字 :0,

50、1,2,3,4,5,6,7,8,9密码数字 :7, 5,9,1,3,6,8,0,2,4答案:scodedb7,5,9,1,3,6,8,0,2,4bufferdb10 dup.;movsi,0movcx,10 leabx,scodeinput:movah,01int21hcmpal,0ahjzexitandal,0fh xlatmovbuffersi,alincsi17loopinputexit:ret第 5 章 微运算机中处理器与i/o 设备间数据传输掌握方法1 试说明一般中断系统的组成和功能;答:处理器内部应有中断恳求信号的检测电路,输出中断响应信号,储存断点的规律,转向中断处理程序的规律, 中断返回规律; 系统中要有一中断掌握器,治理多个中断源, 供应处理机所需的中断处理信息;系统中恳求中断处理的i/o 接口电路要有供应中断恳求信号及接收中断响应信号的规律; 2 什么是中断类型码、中断向量、中断向量表?在基于8086/8088 的微机系统中,中断类型码和中断向量之

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论