西电机电院微机原理上机答案
(完整版)微机原理答案1

(完整版)微机原理答案1第 1 章微型计算机系统概述习题参考答案1-1.微型计算机包括哪几个主要组成部分,各部分的基本功能是什么?答:微型计算机由CPU、存储器、输入/输出接口及系统总线组成。
CPU是微型计算机的核心部件,一般具有下列功能:进行算术和逻辑运算。
暂存少量数据。
对指令译码并执行指令所规定的操作。
与存储器和外设进行数据交换的能力。
提供整个系统所需要的定时和控制信号。
响应其他部件发出的中断请求;总线是计算机系统各功能模块间传递信息的公共通道,一般由总线控制器、总线发送器、总线接收器以及一组导线组成;存储器是用来存储数据、程序的部件;I/O接口是微型计算机的重要组成部件,在CPU和外设之间起适配作用。
1-2.CPU 执行指令的工作过程。
答:指令执行的基本过程:(1)开始执行程序时,程序计数器中保存第一条指令的地址,指明当前将要执行的指令存放在存储器的哪个单元。
(2)控制器:将程序计数器中的地址送至地址寄存器MAR,并发出读命令。
存储器根据此地址取出一条指令,经过数据总线进入指令寄存器IR。
(3)指令译码器译码,控制逻辑阵列发操作命令,执行指令操作码规定的操作。
(4)修改程序计数器的内容。
1-3.果微处理器的地址总线为20 位,它的最大寻址空间为多少?答:220=1048576=1MB1-4.处理器、微型计算机和微型计算机系统之间有什么关系?答:微处理器是微型计算机的核心部件。
微处理器配上存储器、输入/输出接口及相应的外设构成完整的微型计算机。
以微型计算机为主体,配上系统软件和外部设备以后,就构成了完整的微型计算机系统。
1-5.下面十进制数分别转换为二进制、八进制和十六进制数:128,65535,1024答:128,二进制:10000000B,八进制:200O,十六进制:80H 65535,二进制:1111111111111111B,八进制:177777O,十六进制:FFFFH1024,二进制:10000000000B,八进制:2000O,十六进制:400H1-6.下面二进制数分别转换为十进制及十六进制数:1011.1010B,1111101.11 B答:1011.1010B,十进制:11.625,十六进制:B.AH111101.11B,十进制:125.75,十六进制:7D.CH1-7.(5487)10=(0101010010000111)BCD=1010101101111 B1-8.设字长为8 位,请写出下列数的原码、反码、补码和移码:15,-20,-27/32 答:[+15]原=00001111,[+15]反=00001111,[+15]补=00001111,[+15]移=10001111 [-20]原=10010100,[-20]反=11101011,[-20]补=11101100,[-20]移=01101100 [-27/32]原=1.1101100,[-27/32]反=1.0010011,[-27/32]补=1.0010100,[-27/32]移=0.0010100第 2 章微型计算机系统的微处理器习题参考答案2-1.086/8088 CPU 的功能结构由哪两部分组成?它们的主要功能是什么?答:8086/8088 CPU 的功能结构由以下两部分组成:总线接口单元BIU(Bus Interface Unit),执行部件EU (Execution Unit)。
微机原理课后习题参考答案

微机原理课后习题参考答案第1部分微型计算机基础知识1.1 微处理器、微型计算机和微型计算机系统三者之间有什么不同?【解】微处理器:指计算机内部对数据进行处理并对处理过程进行控制的部件,伴随着大规模集成电路技术的迅速发展,芯片集成密度越来越高,CPU可以集成在一个半导体芯片上,这种具有中央处理器功能的大规模集成电路器件,被统称为“微处理器”。
微型计算机:简称“微型机”、“微机”,也称“微电脑”。
由大规模集成电路组成的、体积较小的电子计算机。
由微处理机(核心)、存储片、输入和输出片、系统总线等组成。
特点是体积小、灵活性大、价格便宜、使用方便。
微型计算机系统:简称“微机系统”。
由微型计算机、显示器、输入输出设备、电源及控制面板等组成的计算机系统。
配有操作系统、高级语言和多种工具性软件等。
1.2 CPU在内部结构上由哪几部分组成?CPU应该具备哪些主要功能?【解】CPU在内部结构上由运算器、控制器、寄存器阵列和内部总线等各部分构成,其主要功能是完成各种算数及逻辑运算,并实现对整个微型计算机控制,为此,其内部又必须具备传递和暂存数据的功能。
1.3 微型计算机采用总线结构有什么优点?【解】①简化了系统结构,便于系统设计制造;②大大减少了连线数目,便于布线,减小体积,提高系统的可靠性;③便于接口设计,所有与总线连接的设备均采用类似的接口;④便于系统的扩充、更新与灵活配置,易于实现系统的模块化;⑤便于设备的软件设计,所有接口的软件就是对不同的口地址进行操作;⑥便于故障诊断和维修,同时也降低了成本。
总线的逻辑电路有些是三态的,即输出电平有三种状态:逻辑“0”,逻辑“1”和“高阻”态。
1.4计算机总线有哪些,分别是什么?【解】总线按其信号线上传输的信息性质可分为三组:①数据总线,一般情况下是双向总线;②地址总线,单向总线,是微处理器或其他主设备发出的地址信号线;③ 控制总线,微处理器与存储器或接口等之间1.5 数据总线和地址总线在结构上有什么不同之处?如果一个系统的数据和地址合用一套总线或者合用部分总线,那么要靠什么来区分地址和数据?【解】数据总线(DB)为双向结构,数据在CPU与存储器或I/O 接口之间的传送是双向的,(数据既可以读也可以写),其宽度通常与微处理器的字长相同。
(完整版)微机原理课后习题参考答案

第一章2、完成下列数制之间的转换。
(1)01011100B=92D (3)135D=10000111B (5)10110010B=262Q=B2H3、组合型BCD码和非组合型BCD码有什么区别?写出十进制数254的组合型BCD数和非组合型数。
答:组合型BCD码用高四位和低四位分别对应十进制数的个位和十位,其表示范围是0~99;非组合型BCD码用一个字节的低四位表示十进制数,高四位则任意取值,表示范围为0~9。
组合型:254=(001001010100)BCD非组合型:254=(00000010 00000101 00000100)BCD7、计算机为什么采用补码形式存储数据?当计算机的字长n=16,补码的数据表示范围是多少?答:在补码运算过程中,符号位参加运算,简化了加减法规则,且能使减法运算转化为加法运算,可以简化机器的运算器电路。
+32767~ -32768。
9、设计算机字长n=8,求下列各式的[X+Y]补和[X-Y]补,并验证计算结果是否正确。
(1)X=18,Y=89 [X+Y]补=00010010+01011001=01101011B=107D 正确[X-Y]补=10111001B=00010010+10100111=(-71D)补正确(2)X=-23,Y=-11 [X+Y]补=11101001+11110101=11011110B=(-34D)补正确[X-Y]补=11101001+00001011=11110100B=(-12D)补正确(3)X=18,Y=-15 [X+Y]补=00010010+11110001=00000011B=(3D)补正确[X-Y]补=00010010+00001111=00100001B=(33D)补正确(4)X=-18,Y=120 [X+Y]补=11101110+01111000=01100110B=(102D)补正确[X-Y]补=11101110+10001000=01110110B=(123D)补由于X-Y=-138 超出了机器数范围,因此出错了。
(完整版)微机原理答案

微机原理答案习题11.什么是汇编语言,汇编程序,和机器语言?答:机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指令的集合。
汇编语言是面向及其的程序设计语言。
在汇编语言中,用助记符代替操作码,用地址符号或标号代替地址码。
这种用符号代替机器语言的二进制码,就把机器语言编程了汇编语言。
使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序。
2.微型计算机系统有哪些特点?具有这些特点的根本原因是什么?答:微型计算机的特点:功能强,可靠性高,价格低廉,适应性强、系统设计灵活,周期短、见效快,体积小、重量轻、耗电省,维护方便。
这些特点是由于微型计算机广泛采用了集成度相当高的器件和部件,建立在微细加工工艺基础之上。
3.微型计算机系统由哪些功能部件组成?试说明“存储程序控制”的概念。
答:微型计算机系统的硬件主要由运算器、控制器、存储器、输入设备和输出设备组成。
“存储程序控制”的概念可简要地概括为以下几点:①计算机(指硬件)应由运算器、存储器、控制器和输入/输出设备五大基本部件组成。
②在计算机内部采用二进制来表示程序和数据。
③将编好的程序和原始数据事先存入存储器中,然后再启动计算机工作,使计算机在不需要人工干预的情况下,自动、高速的从存储器中取出指令加以执行,这就是存储程序的基本含义。
④五大部件以运算器为中心进行组织。
4.请说明微型计算机系统的工作过程。
答:微型计算机的基本工作过程是执行程序的过程,也就是CPU自动从程序存放的第1个存储单元起,逐步取出指令、分析指令,并根据指令规定的操作类型和操作对象,执行指令规定的相关操作。
如此重复,周而复始,直至执行完程序的所有指令,从而实现程序的基本功能。
5.试说明微处理器字长的意义。
答:微型机的字长是指由微处理器内部一次可以并行处理二进制代码的位数。
它决定着计算机内部寄存器、ALU和数据总线的位数,反映了一台计算机的计算精度,直接影响着机器的硬件规模和造价。
(完整word版)西电微机原理上机

4.37 (上机题)编写程序实现,将缓冲区BUFFER中的100个字按递增排序,并按下列格式顺序显示:数据1 <原序号>数据2 <原序号>……算法流程图:调试问题、心得体会:通过这道题,熟悉了流程图画法,掌握了产生随机数,“冒泡法”排序,子函数编写调用等的基本过程,尤其对于中断调用,并利用ASCII码回显和对课本字节型数据“冒泡法”排序改进为字形排序的过程,是我受益匪浅。
并且亲身实践了源程序的汇编、调试也连接。
问题:将字节型冒泡法直接应用于该题,导致出错,该题存储的是字型数据!原因在于只是排列的AL中的数值,并不是产生的随机数!同时对于字型与字节型在运算类指令中的应用还是有误,以及其他的一些小错误,应加以改善!运行结果:程序代码:STACK SEGMENT STACK 'STACK'DW 100H DUP(?)TOP LABEL WORDSTACK ENDSDATA SEGMENTBUFFER LABEL WORDX=17REPT 100X=(X+80)mod 43DW XENDMBUF DW 100 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK START:MOV AX,DATAMOV DS,AXMOV ES,AXMOV AX,STACKMOV SS,AXLEA SP,TOPMOV CX,100LEA SI,BUFFERLEA DI,BUFL1:MOV AX,[SI]INC SIINC SIMOV [DI],AXINC DIINC DILOOP L1MOV CX,100DEC CXLEA SI,BUFFERPUSH CXADD CX,CXADD SI,CXPOP CXL2:PUSH CXPUSH SIL3:MOV AX,[SI]CMP AX,[SI-2]JAE NOXCHGXCHG AX,[SI-2]MOV [SI],AXNOXCHG:LOOP L3POP SIPOP CXLOOP L2MOV CX,100LEA SI,BUFFER L4:MOV AX,[SI] CALL DISPAX ADD SI,2CALL XIAOYU CALL XUHAOCALL DAYUCALL DISPCR LOOP L4MOV AH,4CHMOV AL,0INT 21H DISPAX PROC NEARPUSH AXPUSH BXPUSH CXPUSH DXPUSH DIMOV BX,10MOV CX,3L7:XOR DX,DXDIV BXMOV [DI],DX INC DIINC DILOOP L7MOV CX,3L8:DEC DIDEC DIMOV AL,[DI] ADD AL,30HMOV AH,02MOV DL,ALINT 21HLOOP L8POP DXPOP CXPOP BXPOP AXRET DISPAX ENDP DISPCR PROC NEAR PUSH AXPUSH DXMOV AH,2MOV DL,0AH INT 21HMOV AH,2MOV DL,0DH INT 21HPOP DXPOP AXRET DISPCR ENDP XIAOYU PROC NEAR PUSH AXPUSH DXMOV AH,02 MOV DL,3CH INT 21HPOP DXPOP AXRET XIAOYU ENDP XUHAO PROC NEAR PUSH AXPUSH BXPUSH CXPUSH SIMOV CX,100 MOV BX,AX LEA SI,BUF L5:CMP BX,[SI] JZ L6ADD SI,2LOOP L5L6:MOV AX,101SUB AX,CXCALL DISPAXPOP SIPOP CXPOP BXPOP AXRETXUHAO ENDPDAYU PROC NEARPUSH AXPUSH DXMOV AH,02MOV DL,3EHINT 21HPOP DXPOP AXRETDAYU ENDPCODE ENDSEND START4.38 (上机题)按同余法产生一组随机数N(1<N<=50),并按N+50赋给45名同学的5门课程的成绩,要求编程实现计算每个同学的平均成绩,并根据平均成绩统计全班的成绩各等级的人数(A:90~100,B:80~89,C:70~79,D:66~69,E:60~65,F:60分以下),按下列格式显示:Total <总人数>A: <人数1>B: <人数2>C: <人数3>D: <人数4>E: <人数5>F: <人数6>算法流程图:调试问题、心得体会:通过该问题,进一步练习了通过流程图分析设计程序的功能,掌握了随机数产生,子函数调用,分支程序,循环程序,中断调用等过程,进行了调试,找出了数值无法转化为十进制并显示的问题,原因在于未定义临时存储单元。
西电微机原理上机作业完整版

SUM DD ?DATA ENDS ;数据段CODE SEGMENT ;代码段ASSUMECS:CODE,DS:DATA,SS:STAC KSTART: MOVAX,DATAMOV DS,AXMOV AX,STACKMOV SS,AXLEA SP,TOPLEA SI,ADD1LEA DI,ADD2MOV AL,[SI]ADD AL,[DI]DAAMOV BYTE PTR SUM,ALMOV AL,[SI+1]ADC AL,[DI+1]DAAMOV BYTE PTR SUM+1,ALMOV AL,[SI+2]ADC AL,[DI+2]DAAMOV BYTE PTR SUM+2,ALMOV AL,[SI+3]ADC AL,[DI+3]DAAMOV BYTE PTR SUM+3,ALMOVAX,WORD PTR SUM+2CALL DISPAXMOV AX,WORD PTR SUMCALL DISPAXMOV AH,4CHINT 21H DISPAL PROC NEAR PUSH AXPUSH CXPUSH DXPUSH AXMOV CL,4SHR AL,CLCALL CHANGMOV AH,02MOV DL,ALINT 21HPOP AXAND AL,0FHCALL CHANGMOV AH,02MOV DL,ALINT 21HPOP DXPOP CXPOP AXRETDISPAL ENDPCHANG PROC NEARCMP AL,10JNGE CHANG1ADD AL,7CHANG1: ADDAL,30HRETCHANG ENDPDISPAX PROC NEARXCHG AL,AHCALL DISPALXCHG AH,ALCALL DISPALRETDISPAX ENDPCODE ENDSEND START2. 有一个首地址为A的N字数组,请编程序使该数组中的数按从大到小的次序排列。
STACK SEGMENT STACKDB 256 DUP(?)STACK ENDSDATA SEGMENTDATA1 DW7800H,6832H,0000H,87H,1275 H,0EC34HSTRING1 DB 'input number:',0DH,0AH,'$'STRING2 DB 'The numbersfrom large to smallis:',0DH,0AH,'$'DATA ENDSCODE SEGMENTASSUMECS:CODE,DS:DATA,ES:DATA, SS:STACKSTART: MOV AX,DATAMOV DS,AXMOV ES,AXMOV AX,STACKMOV SS,AXLEA DX,STRING1MOV AH,09HINT 21HMOV CX,6 LEA SI,DATA1 L1: MOV AX,[SI] ADD SI,2CALL DISPAX CALL DISPCR LOOP L1MOV CX,5LEA SI,DATA1 ADD SI,10LP1: PUSH CXPUSH SILP2: MOV AX,[SI] CMP AX,[SI-2] JBE NOXCHG XCHG AX,[SI-2] MOV [SI],AXNOXCHG: DEC SIDEC SILOOP LP2POP SIPOP CXLOOP LP1LEA DX,STRING2 MOV AH,09HINT 21HMOV CX,6LEA SI,DATA1L2: MOV AX,[SI]ADD SI,2CALL DISPAXCALL DISPCRLOOP L2 MOV AH,4CH INT 21H DISPAL PROCPUSH AXPUSH CXPUSH DXPUSH AXMOV CL,4SHR AL,CLCALL CHANG MOV AH,02H MOV DL,AL INT 21HPOP AXAND AX,0FH CALL CHANGMOV AH,02HMOV DL,ALINT 21HPOP DXPOP CXPOP AXRETDISPAL ENDP CHANG PROCCMP AL,10JNGE CHANG1ADD AL,7 CHANG1: ADD AL,30H RETCHANG ENDP DISPAX PROC XCHG AL,AH CALL DISPAL XCHG AH,AL CALL DISPAL RET DISPAX ENDP DISPCR PROCPUSH AXPUSH DXMOV AH,2MOV DL,0AH INT 21HMOV AH,2MOV DL,0DH INT 21HPOP DXPOP AX RET DISPCR ENDPCODE ENDSEND START3.编写如下程序,并在机器上调试成功。
西安电子科技大学微机原理上机题37题

编写程序实现将缓冲区BUFFER中的100个字按递增排序,并按下列格式顺序显示:数据1 <原序号>数据2 <原序号>数据3 <原序号>················程序如下(效果图):N=100DATAS SEGMENTBUFFER LABEL WORDX=55519REPT 100X=(X+7517)mod 65535DW XENDMNUMBER LABEL BYTEY=0REPT 100Y=Y+1DB YENDMDECIMAL DB 5 DUP(?)M DW 1 DUP(?)DATAS ENDSSTACKS SEGMENTDW 100H DUP(?)TOP LABEL WORDSTACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKS START:MOV AX,DATASMOV DS,AXMOV ES,AXMOV AX,STACKSMOV SS,AXLEA SP,TOPXOR AX,AX ;开始程序LEA SI,BUFFERLEA DI,NUMBERCALL SORTMOV CX,N ;显示程序开始L1:MOV AX,[SI]MOV M,5CALL DISPAXDCALL DISPEMADD SI,2 ;显示数值XOR AX,AXMOV AL,[DI]MOV M,3CALL DISPAXDCALL DISPCRINC DI ;显示序号LOOP L1MOV AH,4CHMOV AL,0INT 21HSORT PROC NEARPUSH SIPUSH DIPUSH AXPUSH BXPUSH CXMOV CX,N;开始冒泡程序DEC CXLP1: ;外循环PUSH SIPUSH DIPUSH CXLP2: ;内循环MOV AX,[SI]CMP AX,[SI+2]JBE NOXCHGXCHG AX,[SI+2]MOV [SI],AXMOV BL,[DI]XCHG BL,[DI+1]MOV [DI],BLNOXCHG:ADD SI,2INC DILOOP LP2POP CXPOP DIPOP SILOOP LP1 ;冒泡结束POP CXPOP BXPOP AXPOP DIPOP SIRETSORT ENDPDISPAXD PROC NEARPUSH AXPUSH BXPUSH CXPUSH DXPUSH DILEA DI,DECIMALCALL TRANS16TO10MOV CX,MMOV BX,CXDEC BXLEA DI,DECIMAL[BX];指向最高位MOV AH,2DISPAXD2:MOV DL,[DI]ADD DL,30HDEC DIINT 21HLOOP DISPAXD2POP DIPOP DXPOP CXPOP BXPOP AXRETDISPAXD ENDPTRANS16TO10 PROC NEARPUSH AXPUSH BXPUSH CXPUSH DXPUSH DIMOV BX,10MOV CX,MTRANS1:XOR DX,DXDIV BXMOV [DI],DLINC DILOOP TRANS1POP DIPOP DXPOP CXPOP BXPOP AXRETTRANS16TO10 ENDPDISPEM PROC NEARPUSH AXPUSH DXMOV AL,20HMOV AH,02MOV DL,ALINT 21H ;显示一位字符POP DXPOP AXRETDISPEM ENDPDISPCR PROC NEARPUSH AXPUSH DXMOV AL,0AHMOV AH,02MOV DL,ALINT 21H ;显示一位字符POP DXPOP AXRETDISPCR ENDPCODES ENDSEND START。
微型计算机原理 习题西电

《微型计算机原理(第五版)》学习指导(p37习题3.3)2.指出下列指令语法是否正确,若不正确请说明原因。
(1)MOV DS,0100H(2)MOV BP,AL(3)XCHG AX,2000H(4)OUT 310H,AL(5)MOV BX,[BX](6)MOV ES:[BX+DI],AX(7)MOV AX,[SI+DI](8)MOV SS:[BX+SI+100H],BX(9)AND AX,BL(10)MOV DX,DS:[BP](11)MOV [BX],[SI](12)MOV CS,[1000](13)IN AL,BX7.执行下列程序段,指出此程序段的功能。
(1)MOV CX,10LEA SI,FirstLEA DI,SecondREP MOVSB(2)CLDLEA DI,ES:[0404H]MOV CX,0080HXOR AX,AXREP STOSW9.已知AX=8060H,DX=03F8H,端口PORT1的地址是48H,内容为0040H;PORT2的地址是84H,内容为0085H。
请指出下列指令执行后的结果。
(1)OUT DX,AL(2)IN AL,PORT1(3)OUT DX,AX(4)IN AX,48H(5)OUT PORT2,AX(p41自测题3.4)1.试用指令实现(1)使AX寄存器清0有4种方式,试写出这四条指令;(2)BL寄存器低4位置1;(3)CL寄存器低4位取反。
2.若(BX)=0002H,且有如下变量定义:DBT1 DW 0400HDBT2 DD 01000020HTAB DW 0600H, 0640H, 06A0H, 06C0H请指出下列指令的寻址方式及转向地址:(1)JMP BX(2)JMP DBT1(3)JMP DBT2(4)JMP TAB[BX+2]7.选择题:(1)程序段MOV AX, 405HMOV BL, 06HADDDIV BL执行后AX的内容为______。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
汇编语言上机题姓名:学号:成绩:实验一、上机过程及DEBUG应用编写程序,建立数据段DA TA,将你的姓名(汉语拼音)及学号存入DATA数据段的BUFFER1区域,然后利用程序将BUFFER1区域中的字符串(姓名及学号)依次传送到从BUFFER2开始的内存区域中去。
上机过程与要求1.建立原程序:源程序文件名为buffer.asm ,源程序清单如下:data segmentbuffer1 db 'hepan04105038'buffer2 db 13 dup(?)data endscode segmentASSUME CS:CODE,DS:DA TASTART:mov ax,datamov ds,axmov es,axlea si,buffer1lea di,buffer2mov cx,0dcldrep movsbmov ah,4chint 21hcode endsend start2.汇编后生成的obj文件名为buffer .OBJ3.连接后生成的目标文件名为buffer .EXE4.DEBUG调试:在DEBUG下,利用U、D、G、R等命令对EXE文件进行调试后,相关信息如下:(1)表1-1 反汇编清单中所反映的相关信息段地址偏移地址机器码助记符第一条指令14B4 0000 B89D14 MOV AX,14B2第二条指令14B4 0003 8ED8 MOV DX,AX最后一条指令14B4 001E D1E3 SHL BX,1*注:最后一条指令是对应于代码段中最后一条指令(2)在未执行程序之前,用D命令显示内存区域BUFFER1及BUFFER2中的内容,其相关信息如表1-2所示。
表1-2 未执行程序之前的数据区内容变量区段地址值偏移地址变量值(或字符串)BUFFER1 14B2 0000 hepan04105038BUFFER2 14B2 000D ………….(3)执行程序以后用D命令显示内存区域的相关信息,如表1-3。
表1-3 执行程序之后的数据区内容变量区段地址值偏移地址变量值(字符串)BUFFER1 14B2 0000 hepan04105038BUFFER2 14B2 000D hepan04105038(4)用R命令检查寄存器的内容如表1-4所示。
表1-4 有关寄存器内容寄存器名CS DS IP AX BX CX SI DI内容14B4 14A2 0000 0000 0000 0039 0000 0000回答问题a)宏汇编命令MASM的作用是什么?答:产生OBJ文件。
b)连接命令LINK的作用是什么?连接后生成什么文件?答:产生EXE文件,生成EXE文件。
c)DEBUG下U命令的作用是什么?答:反汇编被调试命令。
d)DEBUG下D命令的作用是什么?答:显示内存单元的内容。
e) 在DEBUG下如何执行.EXE文件,写出执行命令的常用格式。
答:DEBUG NAME.EXE。
实验二、寻址方式练习掌握8086/8088的寻址方式是学习汇编语言的基础,因此,我们以数据传送指令为例编写了下面的程序,通过该程序对主要的几种寻址方式进行练习。
DATA1 SEGMENTM1 DB 0A0H,0A1H,0A2H,0A3H,0A4H,0A5HM2 DB 0A6H,0A7H,0A8H,0A9H,0AAH,0ABH,0ACH,0ADH,0AEH,0AFHDATA1 ENDSDATA2 SEGMENTN1 DB 0B0H,0B1H,0B2H,0B3H, 0B4H,0B5HN2 DB 0B6H,0B7H, 0B8H,0B9H,0BAH,0BBH, 0BCH,0BDH,0BEH,0BFHDATA2 ENDSSTACK SEGMENT PARA STACK ‘STACK’DB 0C0H,0C1H,0C2H,0C3H, 0C4H,0C5HDB 0C6H,0C7H, 0C8H,0C9H,0CAH,0CBH, 0CCH,0CDH,0CEH,0CFHDW 100 DUP (?)TOP LABEL WORDSTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA1,ES:DATA2,SS:STACKSTART: MOV AX , DATA1MOV DS,AXMOV AX , DATA2MOV ES,AXMOV AX , STACKMOV SS,AXMOV AX,OFFSET TOPMOV SP,AXMOV SI,OFFSET M2LEA DI,N2MOV AL,’5’MOV AH, 6MOV BL, M1MOV BH, [SI]MOV CL, ES:N1MOV CH, ES:[DI]MOV BP,0000HMOV DX,[BP]MOV AH,4CHINT 21HCODE ENDSEND START任务1:用EDIT建立源程序,然后汇编、连接生成目标文件。
任务2:在DEBUG下,将上述目标文件调入内存,利用U、D等命令,检查RAM区中的数据,合理使用D 命令,分析所显示的信息并填写表2-1。
任务3:执行程序后, 填写表2—2中各寄存器之值。
表2—2:执行程序后各寄存器之值寄存器寄存器之值寄存器寄存器之值AX 0000 BP 0000BX 0000 DS 14A2CX 0138 ES 14A2DX 0000 SS 14B8SI 0000 CS 14B4DI 0000 IP 0000实验三、分支程序设计该实的验目的是掌握分支程序的设计方法;掌握转移指令的应用;进一步使用DEBUG的调试命令,达到熟练使用的目的。
在DEBUG中提供了测试各个标志位的手段,各标志位的复位(“0”状态)和置位(“1”状态)是用字符表示,如表3—1。
在实验过程中要善于观察分析标志位的变化情况。
表3—1 标志寄存器各标致位的显示字符任务3—1:二进制到ASCII码的转换在M单元存放有一个8位二进制码,将其按位转换成一串ASCII码,即将二进制1转换成字符‘1’的ASCII 码31H;将二进制0 转换成字符‘0’的ASCII码30H。
并依次存放在以STRING开始的RAM区中(高位在前,低位在后)。
转换示例见表3—2。
实验要求:1.按上述要求画出流程图,写出源程序。
test 3.1data segment ;define data segementm db 01101011bstring db 8 dup(?)data endscode segmentassume cs:code,ds:datastart:mov ax,data ;define ds registermov ds,axmov si,offset m ;move m to axmov al,[si]mov bx,offset stringshift:shl al,1jc AB: mov dl,30hmov [bx],dljmp CA: mov dl,31hmov [bx],dlC: inc bxdec cxjmp shiftmov ah,4chint 21hcode endsend start2.在表3—2中分别给出了M单元中的三个数据。
在DEBUG状态下分别运行所编程序,把结果填写到表3—2的对应栏目中,并分析结果的正确性。
表3—2 二进制转换成ASCII码次数及示例实验数据实验结果十六进制二进制示例 D2 11010010 31 31 30 31 30 30 31 301 6B 01101011 30 31 31 30 31 30 31 312 72 01110010 30 31 31 31 30 30 31 303 C9 11001001 31 31 30 30 31 30 30 31任务3—2 : ASCII 码到十进制的转换从STRING1单元开始,存放有一串ASCII码字符(其字符长度为十六个字节,每一个ASCII码占一个字节)。
将STRING1中每个字符转换成与之对应的十进制数字,并存放在以STRING2开始的区中(每个十进制数字占一个字节)。
如果某一个ASCII码不是0-9之间的数,则将STRING2字串中对应单元置为FFH。
实验要求:1.画出流程图,写出源程序。
data segmentstring1 db 20h,31h,48h,0ch,01h,34h,35h,30h,0dh,07h,39h,40h,3ah,33h,00h,33h string2 db 16 dup (?)data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axlea si,string1lea di,string2mov cx,16bijiao:mov al,[si]sub al,30hjb setnumbercmp al,9ja setnumbermov [di],aljmp genggaisetnumber:mov al,0ffhmov [di],algenggai:inc siinc didec cxjnz bijiaomov ah,4chint 21hcode endsend start2.表3—3给出了STRING1的数据(十六进制的ASCII码),运行程序,填写对应结果(表3—3)。
表3—3 ASCII码到十进制转换的实验数据与运行结果1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 STRING1 20H 31H 48H 0CH 01H 34H 35H 30H 0DH 07H 39H 40H 3AH 33H 00H 33H STRING2 FFH 01H FFH FFH FFH 04H 05H 00H FFH FFH 09H FFH FFH 03H FFH 03H实验四、循环程序设计按下列要求编写程序并上机运行。
任务4-1:显示下列图案(提示:DOS功能调用时,应使用控制码0AH和0DH分别控制换行和回车操作)。
** ** * ** * * ** * * * *DATAS SEGMENTDATAS ENDSSTACKS SEGMENT;此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AXMOV BX,01HXUNHUAN:CMP BX,6JE STOPMOV CX,BXOUTPUT:MOV DL,'*'MOV AH,2INT 21HLOOP OUTPUTMOV DL,0AHMOV AH,2INT 21HMOV DL,0DHMOV AH,2INT 21HADD BX,01HJMP XUNHUANSTOP:MOV AH,4CHINT 21HCODES ENDSEND START任务4-2:由键盘输入一英文字母,将其转换成大写字母显示出来,当输入的字符不是英文字母时程序结束。