收藏 分销(赏)

微机原理与接口技术部分课后习题样本.doc

上传人:二*** 文档编号:4528242 上传时间:2024-09-26 格式:DOC 页数:27 大小:294KB
下载 相关 举报
微机原理与接口技术部分课后习题样本.doc_第1页
第1页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。串操作指令特点: 1. 可用前缀使其重复操作; 2. 每操作一次自动修改SI和DI内容, 当DF=0时为增量, DF=1为减量; 3. 所有源操作数地址放在SI中, 在DS段, 串长 64K; 所有目标操作数地址放在DI中, 在ES段, 串长 64K; 4. 用重复前缀时, 如果条件满足且CX 0 时重复, 每重复一次CX CX1, 否则结束重复; 5. 重复操作时IP不变, 中断返回后继续操作。 使用串操作指令时注意: 1. SI 源串首(末)址DI 目标串首(末)址; 2. CX 串长度; 3. 设DF 值; 4. 选重复前缀;

2、 5. 使用条件重复前缀时, 判断结束条件(即 是CX=0 还是ZF=0/1结束) 指令执行时间: 计算机中的计时单位: (1). 指令周期: 执行一条指令所花的时间; (2). 总线周期: CPU 每访问一次内存或I/O端口所花的时间; (3). 时钟周期(T周期): 计算机主频的倒数, 用T表示, 即 T=1 / F 1、 试分别说明下列指令中源操作数和目的操作数采用的寻址方式: 答案: 目的操作数 源操作数( 1) MOVAX,0FFFFH 寄存器 立即( 2) MOVES,AX 寄存器 寄存器( 3) XORCL,100H 寄存器 直接( 4) ADDSI,DX 寄存器间 寄存器( 5

3、) MOVES: H,CL 直接 寄存器( 6) SUBBX+SI,1 基+变 立即( 7) ADCAX,BX+SI+10H 寄存器 相对基+变( 8) PUSHDS 隐含 寄存器(9) CLD 隐含(10) CMPBP+DI,CL 基+变 寄存器2、 若( BX) =1123H, ( SI) =1968H, 位移量=0313H, ( DS) =1971H, 试确定由这些寄存器和下列寻址方式产生的有效地址和物理地址: 答案: EA 物址(1) 直接寻址; 0313H 19A23H(2) 用BX的寄存器间接寻址; 1123H 1A833H(3) 用BX的寄存器相对寻址; 1436H 1AB46H

4、(4) 用BX和SI的基址变址寻址; 2A8BH 1C19BH(5) 用BX和SI的相对基址加变址寻址。 2D9EH 1C4AEH3、 连续执行以下指令, 并在空格中填写执行指令的结果。 答案: MOVAX, 2060HAL=60H AH=20H CF=MOVDS, AXDS=2060H AH=20H CF= ADDAL, AHAL=80H AH=20H CF=0 INCAXAL=81H AH=20H CF=0 MOVDX, 512DL=00H DH=02H CF=0 SUBAX, DXAL=81H AH=1EH CF=0 第3章: 汇编语言程序设计 1. 本章学习要求 (1). 应熟悉的内容

5、: 汇编语言的格式、 语句行的构成。(2). 应掌握的内容: 指示性语句、 指令性语句及相互区别、 作用。(3). 应熟悉掌握的内容: 各种结构的汇编语言程序设计的方法, 特别是分支结构和循环结构程序的特点和设计。2. 本章重点难点分析: 伪指令、 程序设计、 子程序中参数经过堆栈传递较难。经过看例题、 做作业和上机实习解决。如: 汇编程序是将由助记符号所编写的汇编语言源程序转换为计算机能直接执行的目标程序的软件, 即: 汇编程序连接程序目标程序可执行文件 汇编语言源程序 .ASM MASM .OBJ LINK .EXE 上图可看出汇编语言源程序(扩展名为 .ASM)经过”汇编程序”汇编后生成

6、二进制编码的目标程序(.OBJ), 再经过”连接程序”生成可执行文件(.EXE)便能够上机执行或使用DEBUG程序进行调试。 而指示性语句(伪指令)是告诉汇编程序如何将汇编语言源程序转换为目标程序的语句, 在可执行的目标程序生成后的软件中, 伪指令是看不见的。如: SEGMENT是表示一个段的开始, ENDS表示段结束; 而ASSUME告诉汇编程序, 将某一个段寄存器设置为存放某一个逻辑段的段址, 即明确指出源程序中的逻辑段与物理段之间的关系。当汇编程序汇编一个逻辑段时, 即可利用相应的段寄存器寻址该逻辑段中的指令或数据。也就是说ASSUME是建立一个段寄存器与段名的对照表, 汇编时使汇编程序

7、能找到本段属于哪个段寄存器, 在此对照表中所出现的存储器操作数, 寻址时只需给出偏移地址, 否则还应给出段地址。 关键字NOTHING表示取消前面用ASSUME伪操作对这个段寄存器的设置。使用ASSUME语句, 仅仅告诉汇编程序关于段寄存器与定义段之间的对应关系。但它并不意味着汇编后这些段地址已装入了相应的段寄存器中, 这些段地址的真正装入, 仍需要用程序来完成, 且这 4个段寄存器的装入略有不同。 3. 本章典型例题分析: 【例1】若从0200H单元开始有100个数, 编一个程序检查这些数, 正数保持不变, 负数都取补后送回。DATA SEGMENT ORG 0200HSTRING DB 4

8、 DUP (-55,5 DUP(6,-10,-8,9),2 DUP(-4,0)DATA ENDSSTACK SEGMENT PARA STACK STACK DB 100 DUP (?)STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTART PROC FARBEGIN: PUSH DS MOV AX, 0 PUSH AX MOV AX, DATA MOV DS, AX MOV ES, AX MOV CX, 100 LEA SI, STRINGAGAIN: MOV AL, SI AND AL, AL JNS OVER

9、; AL0, 跳至OVER NEG AL; AL0, 对AL求补OVER: MOV SI, AL INC SI LOOP AGAIN INT 3 RETSTART ENDPCODE ENDS END BEG【例2】数据块间的搬移程序。程序要求把内存中一数据块(称为源数据块)传送到另一存储区(称为目的数据块)。图4-11给出源数据块和目的数据块在存储器中可能的3种情况: 两块分离和有部分重叠。对于两个数据块分离的情况, 如图4-11(a), 数据的传送从数据块的首址开始, 或者从数据块的末址开始均可。但对于有部分重叠的情况, 则要加以分析, 否则重叠部分部分会因”搬移”而遭破坏, 从图4-11(

10、b)和(c)能够得出以下结论: 当源数据块首址目的块首址时, 从数据块末地址开始传送数据。当源数据块首址目的块首址时, 从数据块首地址开始传送数据。流程图如图4-12所示, 00000H 00000H 00000H 源数 据块 源数 目的 据块 数据块 目的 源数 目的 数据块 据块 数据块FFFFFH FFFFFH FFFFFH (a) (b) (c)图4-11 数据块之间的三种情况开 始SI源数据块首址DI目的数据块首址CX搬家字节数(SI)(DI)? NYSI(SI)+(CX)-1DI(DI)+(CX)-1(DI)(SI)SI(SI)+1DI(DI)+1SI(SI)-1DI(DI)-1D

11、I(SI)DI(SI)DI(SI)(CX)=0? (CX)=0? 结 束NNYY图 4-12程序如下: STACKSEGMENTSTACKDW64DUP(? )STACKENDSCODESEGMENTASSUMECS: CODE, SS: STACKSTART: MOVCX, 0010H; 取搬家字节数(16个字节)MOVSI, 3100H; 取源块首址MOVDI, 3200H; 取目的块首址CMPSI, DI; 从首址开始? JAA2; 是, 转移ADDSI, CX; 否, 以末地址开始搬家ADDDI, CXDECSIDECDIA1: MOVAL, SI; 从末址开始搬家MOVDI, ALD

12、ECSIDECDIDECCXJNEA1JMPA3A2: MOVAL, SI; 从首址开始搬家MOVDI, ALINCSIINCDIDECCXJNEA2A3: MOVAH, 4CHINT21HCODEENDSENDSTART4. 本章作业(带答案): 2、 若在自 H单元开始有一个1000个字节的数据块, 要把它传送到自2200H开始的存储区中去, 用以下三中方法, 分别编制程序: (1) 不用串操作指令。(2) 用单个传送的串操作数据传送指令。(3) 用带重复前缀的串操作数据传送指令。程序如下: DATASEGMENTORG HN1DBn1,n2,n1000N2EQU H+10001CONEQ

13、U1000DATAENDSSTACKSEGMENTSTACKSTACKDW100DUP(?)STACKENDSCODESEGMENTORG1000HASSUMECS:CODE,DS:DATA,ES:DATA,SS:STACKMAINPROCSTART:MOVAX,DATAMOVDS,AXMOVES,AXLEASI,N1+10001 ; (2) ; (3)MOVDI,N2MOVCX,CON;STDL1:MOVAL,SI;MOVSB ;REP MOVSB MOVDI,ALDECSIDECDILOOPL1;LOOP L1MOVAH,4CHINT21HMAINENDPCODEENDSENDSTART3

14、、 若在存储器中有数a、 b、 c、 d( 它们连续存放) , 编写一个程序实现: ( ( a * 10 + b) *10+c) *10+d ( 假设和小于65535) 程序如下: DATASEGMENTBCMDWa,b,c,dDATAENDSCODESEGMENTASSUMECS: CODE, DS: DATABCD1PROCFARSTART: MOVAX, DATAMOVDS, AXLEASI, BCMMOVCX,3MOVAX, SIL1: INCSISHLAX, 1; ( AX) ( AX) 2MOVBX, AX; ( BX) ( AX) 2SHLAX, 1; ( AX) ( AX) 4

15、SHLAX, 1; ( AX) ( AX) 8ADDAX, BX; ( AX) ( AX) 10ADDAX,SILOOPL1INCSIMOVSI, AX MOVAH, 4CHINT21HBCD1ENDPCODEENDSENDSTART4、 已知数组A包含10个互不相等的整数, 数组B包含15个互不相等的整数。试编写一程序, 将既在A中出现又在B中出现的偶数存放在数组C中。程序如下: DATA SEGMENT ORG 0500H DATAA DW A1,A2, A10 DATAB DW B1,B2, B15 COUNTA EQU 10 COUNTB EQU 15 DATAC DW 10 DUP(

16、?) DATA ENDS STACK SEGMENT STACK STACK DB 100 DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK START PROC FAR BEGIN: PUSH DS MOV AX,0 PUSH AX MOV AX,DATA MOV ES,AX MOV DS,AX LEA BX,DATAC;(BX)=数组C首址 CLD LEA SI,DATAA;(SI)= 数组A首址 MOV DX,COUNTA;(DX)= 数组A元素个数 LP1: LODSW;取数组A元素到AX LE

17、A DI,DATAB;(DI)= 数组B首址 MOV CX,COUNTB;(CX)= 数组B元素个数 REPNE SCASW ;(AX)= 数组B元素?不同重复 JNZ NEXT;B中无此A元素转NEXT TEST AX, 01H JNZ NEXT MOV BX,AX;有A元素且是偶数存入C中 INC BX INC BX NEXT: DEC DX JNZ LP1 INT 3 START ENDP CODE ENDS END BEGIN5、 若自STRING开始有一个字符串( 以$号作为字符串的结束标志) , 请编程查找此字符串中有无字符#, 有多少个#, 并将个数存放在NUMBER字单元中,

18、且把每一个#字符所存放的偏移地址放到自POINTER开始的连续存储字单元中。程序如下: DATA SEGMENTORG 0100HSTRING DB 593#6707#84BK47#68H#8K8#497$NUMBER DB ?POINTER DW50 DUP (?)DATA ENDSSTACK SEGMENT PARA STACK STACK DB 100 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTART PROC FARBEGIN: PUSH DS MOV AX,0 PUSH AX MOV A

19、X, DATA MOV ES, AX MOV DS, AX LEA SI, STRING LEA DI, POINTER XOR BL, BL ; BL清0AGAIN: MOV AL, SI CMP AL, $ ; 与$比较 JZ STOP CMP AL, # JNZ NEXT MOV DX,SI MOV DI, DX INC DI INC DI INC BLNEXT: INC SI JMP AGAINSTOP: LEA DI, NUMBER MOV DI, BL INT 3START ENDPCODE ENDS END BEGIN一、 8282 (地址锁存器)的作用: 在T1时锁存地址信息。

20、二、 8284(时钟发生器)的作用: 1. 提供系统时钟CLK2. 同步RESET3. 同步READY4. 提供其它系统时钟三、 8286(总线缓冲器)的作用: 1. 数据缓冲2. 增强总线负载能力3. 控制数据传送方向四、 8288(总线控制器)的作用: 在8088/8086 工作在最大模式时, 根据S2S0的信号, 输出系统各种控制信号. 本章作业: (带答案)1. 若用4K1位的RAM芯片组成16K8位的存储器, 需要多少芯片(32片)? A19A0地址线中哪些参与片内寻址(A0A13)? 哪些参与作芯片组的片选择信号(A14A19)? 2. 下列RAM各需要多少条地址线进行寻址? 多少

21、条数据I/O线? 地址线 数据线 地址线 数据线 ( 1) 5124; 9 4 ( 5) 4K1; 12 1 ( 2) 1K4; 10 4 6) 16K4; 14 4 ( 3) 1K8; 10 8 ( 7) 64K1; 16 1 ( 4) 2K1; 11 1 ( 8) 256K4; 18 43. 使用下列RAM芯片, 组成所需的存储容量, 各需多少RAM芯片? 各需多少RAM芯片组? 共需多少寻址线? 每块片子需多少寻址线? 片数 组数 总线数 片内线( 1) 5124的芯片, 组成8K8的存储容量; 32 16 13 9( 2) 10241的芯片, 组成32K8的存储容量; 256 32 1

22、5 10( 3) 10244的芯片, 组成4K8的存储容量; 8 4 12 10( 4) 4K1的芯片, 组成64K8的存储容量; 128 16 16 12 4. 若用2114芯片组成2KB RAM, 地址范围为3000H37FFH, 问地址线应如何连接? ( 假设CPU只有16条地址线, 8根数据线, 可选用线选法和全译码法) C B AA15 A14 A13 A12 A11 A10 A9 A8 A7 A0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 1 1 1 1 1 第三部分 综合练习题1、 名词解释ASSUME, SEGMENT, CPU, BCD码, ASCII码,

23、RAM, EPROM, IP, SP, CS, DS, 开中断, 总线周期, T周期, 段寄存器, 字节、 字, 汇编程序, 堆栈, 字长, 中断, 伪指令, 指示性语句、 指令性语句、 OFFSET、 物理地址、 逻辑地址、 ROM、 ORG 、 AB、 DB、 CB、 指令周期 、 全译码、 局部译码、 内存、 外存 综合练习题答案如下: 1、 名词解释(略)3、 判断下列指令正误, 如果错误请指出原因。 答案: ( 1) MOVCL, 259 数据不匹配( 2) XORBL, BH ( 3) ADD100, AL 立即数不能为目标操作数( 4) MOVSS, 2200H 立即数不能直接送

24、基寄存器( 5) POPCS POP 不能对CS( 6) XCHGCX, DX ( 7) INAL, 260H 端口地址超过256, 应用DX间接寻址( 8) MOVBP+SI, BX 源和目标操作数不能同时为存储器操作数( 9) LEABX, AX 源操作数应为存储器操作数( 10) MOVAX, 10HBX 4、 问答题: (1) 何为逻辑地址? 何为物理地址? 它们俩者之间有何关系? 答: 物理地址是存储器的实际地址, 一个存储单元的物理地址是惟一, 逻辑地址为程序设计中所使用的存储器地址, 它由段基址和地内偏移地址两部份构成, 物理地址=段基址16偏移地址, 可见一个存储单元的逻辑地址

25、能够有若干个。(2) 什么是总线周期?一个基本的总线周期由多少个T构成?答: CPU每访问一次总线所花的时间称为总线周期, 一个基本的总线周期由四个T周期构成。(3) 在使用串操作指令(如MOVS)前应注意些什么? 答: 使用串操作指令时应注意以下五点: 1将源串的首(末)地址送入SI中、 将目标串的首(末)地址送入DI中; 2将串长度送入CX中; 3设置DF的值; 4选择适当的重复前缀; 5判断串操作指令的结束条件。 (4) 8088 CPU有多少根地址线? 多少根数据线? 它最大直接寻址范围是多少? 一次对外数据传送多少BIT二进制数? 答: 8088 CPU有20根地址线,8根数据线,

26、它最大直接寻址范围是1MB, 一次对外数据传送8BIT二进制数。(5) 微机中的基本计时有哪几种? 它们之间的有何关系? 答: 微机中的基本计时有: 指令周期; 总线周期; 时钟周期。一个指令周期由若干时钟周期或总线周期构成, 一个基本的总线周期由四个时钟周期构成, 时钟周期是最小的计时单位, 它是微机主频的倒数。(6) 8086 / 8088 微处理器内部有哪些寄存器? 其主要作用是什么? 答: 8086 / 8088 微处理器内部有: AX、 BX、 CX、 DX、 SI、 DI、 CS、 DS、 SS、 ES、 IP、 SP、 FR、 BP存放数据、 偏移地址、 段基址以及标志。5、 自

27、1000H单元开始, 有100个无符号数( 字节) , 编写程序计算这100个数的和, 并把和存放在1971H和1972H单元, 且高位存放在1972H单元。程序如下: DATASEGMENTORG1000HN1DBn1,n2,n100N2EQU1971HCONEQU100DATAENDSSTACKSEGMENTSTACKSTACKDW100DUP(?)STACKENDSCODESEGMENTORG HASSUMECS:CODE,DS:DATA, SS:STACKMAINPROCSTART:MOVAX,DATAMOVDS,AXLEASI,N1MOVCX,CONXORAX,AXL1:ADDAL,

28、SI ADCAH,0INCSILOOPL1MOVN2,ALMOVN2+1,AHMOVAH,4CHINT21HMAINENDPCODEENDSENDSTART6、 若自6000H单元开始有1000个数( 字节) , 试针对下面情况编程将它们中的最小值、 最大值找出来, 并分别存放在5000H和5001H字节单元中。(1) 这1000个数为无符号数。(2) 这1000个数为带符号数。程序如下: DATASEGMENTORG6000HBUFFERDBX1, X2, , X1000; 自定义N个无(带)符号数COUNTEQU$BUFFERMAXEQU5000H; 保存最大值MINEQU5001H; 保

29、存最小值DATAENDSCODESEGMENTASSUMECS: CODE, DS: DATAMAINPROCSTART: MOVAX, DATAMOVDS, AXMOVCX, COUNTLEABX, BUFFER; 首地址BXMOVAL, BX; AL最大值初值MOVDL, BX; DL最小值初值DECCX; 循环次数减1AGAIN: INCBXCMPAL, BX; 比较JNC (JGE)NEXT1; 若最大值BX, 则转至NEXT1MOVAL, BX; AL保存最新的最大值JMP NEXT2NEXT1: CMPDL, BX; 比较JC (JL)NEXT2; 若最小值BX, 则转至NEXT2

30、MOVDL, BX; DL保存最新的最小值NEXT2: LOOPAGAIN; 循环MOVMAX, AX; MAX存最大值MOVMIN, DX; 存最小值MINMOVAH, 4CHINT21H; 返回DOSMAINENDPCODEENDSENDSTART7、 用2114存储器芯片组成2KB RAM, 地址范围为C800HCFFFH, 问地址线、 数据线及相关的控制线如何连接? (假设CPU只有16根地址线、 8根数据线, 控制线为 WR、 RD、 IO/M, 采用LS138全译法。见下图, ) C B AA15 A14 A13 A12 A11 A10 A9 A8 A7 A0 1 1 0 0 1 0 0 0 0 0 1 1 0 0 1 1 1 1 1 1

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服