微机原理上机实验答案
微机原理实验参考答案(航大)
《微机原理》实验参考答案实验1 汇编基本指令及顺序程序设计实验实验2 分支与DOS中断功能调用程序设计实验实验3 循环结构程序设计实验实验4 存储器扩展实验实验5 8259应用编程实验实验1汇编基本指令及顺序程序设计实验一、实验目的1、掌握汇编语言的开发环境和上机过程;2、掌握DEBUG命令;3、掌握顺序程序设计方法;4、掌握寻址方式;5、理解和掌握汇编基本指令的功能。
二、实验内容1、设堆栈指针SP=2000H,AX=3000H,BX=5000H;请编一程序段将AX和BX的内容进行交换。
要求:用3种方法实现。
答:方法一CODE SEGMENTASSUME CS:CODESTART: MOV AX,3000HMOV BX,5000HMOV CX,AXMOV AX,BXMOV BX,CXCODE ENDSEND START方法二CODE SEGMENTASSUME CS:CODESTART: MOV AX,3000HMOV BX,5000HXCHG AX,BXCODE ENDSEND START方法三CODE SEGMENTASSUME CS:CODESTART: MOV AX,3000HMOV BX,5000HPUSH AXPUSH BXPOP AXPOP BXCODE ENDSEND START2、分别执行以下指令,比较寄存器寻址,寄存器间接寻址和相对寄存器寻址间的区别。
MOV AX,BX 寄存器寻址,将BX内容送AXMOV AX,[BX] 寄存器间接寻址,将DS:BX内存单元内容送AXMOV AX,10[BX] 寄存器相对寻址,将DS:BX+10内存单元内容送AX 在DEBUG调试模式,用A命令直接编辑相应指令并用T命令单步执行,执行后查询相应寄存器的值并用D命令查内存。
3、已知有如下程序段:MOV AX,1234HMOV CL,4在以上程序段的基础上,分别执行以下指令:ROL AX,CL AX=2341HROR AX,CL AX=4123HSHL AX,CL AX=2340HSHR AX,CL AX=0123HSAR AX,CL AX=0123HRCL AX,CL 带进位标志位的循环左移RCR AX,CL 带进位标志的循环右移4、设有以下部分程序段:TABLE DW 10H,20H,30H,40H,50HENTRY DW 3┇LEA BX,TABLEADD BX,ENTRYMOV AX,[BX]┇要求:(1)将以上程序段补充成为一个完整的汇编程序。
答案版_微机原理实验报告
《微机原理及接口技术》实验报告2013~2014学年第一学期班级姓名学号指导教师实验一Emu8086软件的使用一、实验目的1、熟悉汇编语言开发环境。
2、掌握Emu8086软件使用方法。
3、理解寻址方式的意义。
二、实验环境1、硬件环境:微机。
2、软件环境:Emu8086 4.07。
三、实验内容1、安装及运行Emu8086将老师发给大家的emu8086软件安装在自己的微机上,然后双击运行桌面上的快捷方式Emu8086,单击“new”按钮,选择“COM template”,然后单击“OK”按钮。
准备在光标闪烁处输入代码。
2、熟悉Emu8086的基本操作(1)有以下程序段,请正确填空。
MOV AX,10000MOV BX,0E49AHADD AX,BXHLT ;表示CPU停机该程序段执行后,AX=__0BAAH___,BX=_E49AH____,CF=__1___,OF=___0__,SF=___0__,ZF=__0__。
(2)上机调试并验证。
单步执行物理地址可以察看flags的各标志十进制表示机器码的十六进制表示①输入(1)中的程序段。
②程序输入后,单击工具栏上的“emulate”按钮,开始执行程序。
③认识Emu8086的指令执行界面,如上图所示,并开始单步执行指令,观察每条指令执行后的情况,与自己的思考相验证。
④程序执行完毕,观察各寄存器的值以及flags中各状态的值,检测并纠正自己的错误答案,并找出错误的原因。
(3)寻址方式已知DS=1000H,ES=2000H,SS=3500H,SI=00A0H,DI=0024H,BX=0100H,BP=0200H,试写出以下各指令中源操作数的寻址方式,并计算出它们的物理地址。
① MOV AX,[100H]源操作数的寻址方式是__直接寻址__________,源操作数的物理地址是_10100H__________。
② MOV AX,[BP+10H]源操作数的寻址方式是__寄存器相对寻址___,源操作数的物理地址是_35210H__________。
微机原理实验一参考答案
实验一汇编语言的工作环境与上机步骤【实验目的】1、熟悉汇编语言的WINDOWS环境下Emu8086的操作环境和操作方法。
2、学会用实验的方式验证理论,进一步熟悉汇编语言开发环境。
3、深刻理解寻址方式的意义以及80X86指令的各种寻址方式。
4、深刻理解80X86各种指令的真正含义及功能。
5、了解汇编语言的程序结构、完成一个简单的程序的填充。
【实验环境】硬件环境IBM/PC 及其兼容机软件环境可视化编程环境Emu8086【实验内容及要求】1、对寄存器和存储单元赋值,观察每个寄存器和存储单元的值。
首先,完成对以下寄存器和存储单元的赋值,赋值内容如下:DS=1000H,SS=2000H,AX=1A2BH,BX=1200H,CX=339AH,BP=1200H,SP=1350H,SI=1354H,(11350H)=0A5H,(11351H)=3CH,(11352H)=0FFH,(11353H)=26H,(11354H)=52H,(11355H)=0E7H,(126A4H)=9DH,(126A5H)=16H,(21350H)=88H,(21351H)=51H。
以下为仿真语句示例:MOV AX,1000HMOV DS,AX ;给数据段DS赋初值1000HMOV AX,2000HMOV SS,AX ;给扩展段SS赋初值 2000HMOV AX,1A2BHMOV BX,1200HMOV CX,339AHMOV BP,1200HMOV SP,1350HMOV SI,1354H ;给通用寄存器赋初值MOV [1350H],0A5HMOV [1351H],3CHMOV [1352H],0FFHMOV [1353H],26HMOV [1354H],52HMOV [1355H],0E7HMOV [26A4H],9DHMOV [26A5H],16H ;给数据段偏移量为1350H~1355H、126A4H~126A5H的存储单元赋初值MOV SS:[1350H],88HMOV SS:[1351H],51H ;给堆栈段偏移量为1350H、1351H的存储单元赋初值2、在以上环境下,请仿真以下简单指令,在下列各小题的空格中填入相应指令的仿真执行结果,并与理论分析结果相比较,确认是否一致。
微机原理实验答案
《微机原理与接口技术》实验报告淮海工学院机械工程学院实验报告书课程名:微机原理与接口技术题目:实验一:程序的编辑、汇编、连接和调试班级:装备092班学号:010912206姓名:邓浩评语:成绩:指导教师:批阅时间:年月日一、目的与要求通过对一个简单程序的编辑、汇编、连接及调试,学习汇编语言程序设计上机操作的基本方法,为以后各项实验以及为实际的程序设计建立基础。
二、实验内容或题目1、验证题对给出的程序进行编辑、汇编、连接和调试。
以下程序段用以显示信息“HELLO.”。
2、设计题编写一程序,实现两个存储单元X,Y中两数相加,并将相加结果存放在SUM变量中,上机调试程序;检查执行结果。
三、实验步骤与源程序实验步骤:编辑源代码,文件名.asm开始——>运行——>输入cmd,显示dos界面查询编译环境所在路径EDIT编译源代码文件名.asm文件TLINK连接生成文件名.obj文件TD运行F8单步执行查看虚拟存储器1、验证题dseg segmentmess1 db 'hello','$'dseg endscseg segmentassume ds: dseg,cs: csegstart: mov ax,dsegmov ds,axmov dx,offset mess1mov ah,09hint 21hmov ah,4chint 21hcseg endsend start2、设计题data segmentx db 2y db 3sum db ?data endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov al,xadd al,ymov sum,almov ah,4chint 21hcode endsend start四、测试数据与实验结果(可以抓图粘贴)1、验证题2、设计题五、结果分析与实验体会通过这次实验,我对汇编语言程序设计上机操作的基本方法有了初步掌握。
西电机电院微机原理上机答案
汇编语言上机题姓名:学号:成绩:实验一、上机过程及DEBUG应用编写程序,建立数据段DATA,将你的姓名(汉语拼音)及学号存入DATA数据段的BUFFER1区域,然后利用程序将BUFFER1区域中的字符串(姓名及学号)依次传送到从BUFFER2开始的内存区域中去。
上机过程与要求1.建立原程序:源程序文件名为,源程序清单如下:data segmentbuffer1 db 'hepan04105038'buffer2 db 13 dup()data endscode segmentASSUME CS:CODE,DS:DATASTART: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 反汇编清单中所反映的相关信息*注:最后一条指令是对应于代码段中最后一条指令(2)在未执行程序之前,用D命令显示内存区域BUFFER1及BUFFER2中的内容,其相关信息如表1-2所示。
表1-2 未执行程序之前的数据区内容(3)执行程序以后用D命令显示内存区域的相关信息,如表1-3。
表1-3 执行程序之后的数据区内容(4)用R命令检查寄存器的内容如表1-4所示。
回答问题a)宏汇编命令MASM的作用是什么答:产生OBJ文件。
b)连接命令LINK的作用是什么连接后生成什么文件答:产生EXE文件,生成EXE文件。
c)DEBUG下U命令的作用是什么答:反汇编被调试命令。
d)DEBUG下D命令的作用是什么答:显示内存单元的内容。
e) 在DEBUG下如何执行.EXE文件,写出执行命令的常用格式。
微机原理实验报告2g(参考答案)
实验步骤及结果记录: 实验步骤: (1) 打开 DVCC-598JH 实验箱电源。 (2) 启动计算机,运行 DVCC-598JH 实验系统。 (3) 新建文件、输入程序并保存文件。 (4) 按 F9 键调试程序。 (5) 按 Ctrl+F9 键编译链接并传送文件至 DVCC-598JH 实验箱。 (6) 打开内部数据区,将 20H 单元的值更改为 00H 运行,观察程序运行情况。 (7) 分别将 20H 单元的值更改为正数(01H~7FH) 、负数(80H~0FFH)运行, 观察程序运行情况。 结果记录: 将 20H 单元的值更改为 00H 运行,观察到 21H 单元的值为 00H; 将 20H 单元的值更改为 08H 运行,观察到 21H 单元的值为 01H; 将 20H 单元的值更改为 87H 运行,观察到 21H 单元的值为 0FFH;
实验步骤及结果记录: 实验步骤: (1) 新建文件、输入程序并保存文件。 (2) 按 F9 键调试程序。 (3) 按 Ctrl+F9 键编译链接并传送文件至 DVCC-598JH 实验箱。 (4) 打开内部数据区,更改从 20H 单元的 8 个数据,观察程序运行情况。 (5) 打开外部数据区,观察从 2000H 开始的 16 个单元数据,检查运行结果的正确性。 结果记录: 20H 给定值 观察值 观察值 87H 2000H 07H 2001H 08H 21H 54H 2002H 04H 2003H 05H 22H 36H 2004H 06H 2005H 03H 23H 23H 2006H 03H 2007H 02H 24H 19H 2008H 09H 2009H 01H 25H 43H 200AH 03H 200BH 04H 26H 77H 200CH 07H 200DH 07H 27H 69H 200EH 09H 200FH 06H
微机原理作业参考答案
微机原理作业参考答案微机原理作业参考答案微机原理作为计算机科学与技术专业的一门重要课程,涉及到计算机的硬件结构与工作原理。
学习微机原理需要掌握计算机的基本组成部分、数据表示与运算、指令系统、存储器等相关知识。
下面将从这几个方面给出微机原理作业的参考答案。
一、计算机的基本组成部分计算机的基本组成部分包括中央处理器(CPU)、存储器和输入输出设备。
其中,CPU负责执行计算机的指令,存储器用于存储数据和指令,输入输出设备用于与外部世界进行信息交互。
二、数据表示与运算数据在计算机中以二进制形式表示。
在二进制数系统中,每一位只有0和1两个取值。
数据的运算包括逻辑运算和算术运算。
逻辑运算包括与、或、非等运算,算术运算包括加、减、乘、除等运算。
三、指令系统指令是计算机执行任务的基本单位,指令系统是计算机的操作系统对计算机硬件的一种规定。
指令系统包括指令的格式、指令的执行方式等。
常见的指令格式有三地址指令、二地址指令和一地址指令等。
指令的执行方式有累加器型、栈型和寄存器型等。
四、存储器存储器是计算机中用于存储数据和指令的部件。
根据存取方式的不同,存储器可以分为随机存取存储器(RAM)和只读存储器(ROM)。
随机存取存储器是计算机中主要的存储器,用于存储正在运行的程序和数据。
只读存储器用于存储不可更改的程序和数据。
五、微机原理作业题示例1. 请解释什么是指令系统。
指令系统是计算机的操作系统对计算机硬件的一种规定,包括指令的格式、指令的执行方式等。
它规定了计算机如何执行任务,是计算机硬件与软件之间的桥梁。
2. 请解释什么是二进制数系统。
二进制数系统是一种用0和1表示数值的数制系统。
在计算机中,数据以二进制形式存储和运算。
二进制数系统是计算机中最基本的数制系统。
3. 请解释什么是随机存取存储器(RAM)。
随机存取存储器(RAM)是计算机中主要的存储器,用于存储正在运行的程序和数据。
它具有随机读写的特性,可以根据地址直接访问任意存储单元。
山东理工大学微机原理及应用B实验指导书及参考答案
实验一熟悉实验系统及设备一、实验要求通过编写一个简单的汇编语言程序并在实验仪上调试,熟悉上机步骤。
二、实验目的:熟悉实验系统及设备,掌握上机的步骤。
三、实验条件:超想—3000TB综合实验仪一套,PC机一台(安装WIN98和HK8086汇编软件)。
四、实验步骤:1、进入WIN98,双击HK8086,实验台加电(复位)。
2、单击设置/通讯口,测试串口,确定延时因子,一般为最大。
通讯前应先复位。
3、单击文件/新建,输入实现两数相加的加法源程序,存E盘根目录,文件名长度不能超过8个字符。
4、单击汇编链接,系统自动加载。
若有错误则改正。
对于“Warning 4021:no stacks Egment”错误,不影响调试。
5、调试运行,F8单步,F9连续。
若有错,则查错后重运行。
6、试验完毕后关闭设备电源。
五、参考实验程序:CODE SEGMENTASSUME CS : CODE, DS : CODESTART: J MP START1D1 DB 12HD2 DB 34HD3 DB ?START1: MOV AX, CSMOV DS, AXMOV AL,D1ADD AL,D2MOV D3,ALNOPCODE ENDSEND START实验二汇编程序设计及调试一、实验要求通过编写一个较复杂的汇编语言程序,在微机原理实验仪或PC机上进行调试,以便掌握汇编语言程序设计的方法及步骤。
二、实验目的:熟悉和掌握汇编语言程序设计的方法及步骤。
三、实验条件:超想—3000TB综合实验仪一套,PC机一台(安装WIN98和HK8086汇编软件)。
四、实验步骤:1、进入WIN98,双击HK8086,实验台加电(复位)。
2、单击设置/通讯口,测试串口,确定延时因子,一般为最大。
注:通讯前应先复位;3、单击文件/新建,输入源程序,存E盘根目录;文件名长度不能超过8个字符。
4、单击汇编链接,程序自动加载。
若有错误,则改正。
对于“Warning 4021:no stacks segment”错误可继续,不影响调试。
东北大学_微机原理实验报告及答案_8253定时计数器
mov dx,04a2h
mov al,02h
out dx,al
mov al,0h
out dx,al
mov dx,04a6h
mov al,0b6h ;通道2
out dx,al
mov dx,04a4h
mov al,2h
out dx,al
mov al,00h
out dx,al
jmp $
code ends
五程序框图开始t0方式控制字写t0计数初值t1方式控制字写t1计数初值t2方式控制字写t2计数初值空操作结束程序框图六参考程序codesegmentassumecs
微机原理实验报告
专业班级姓名学号
实验题目日期
实验三:可编程定时/计数器8253
一、实验目的
掌握8253定时器的编程原理,用示波器观察不同模式下的输出波形。
二、实验设备
MUT—Ⅲ型实验箱、8086CPU模块、示波器。
三、实验内容
8253计数器0,1,2工作于方波方式,观察其输出波形。
四、实验原理
本实验用到两部分电路:脉冲产生电路、8253定时器/计数器电路
脉冲产生电路:该电路由1片74LS161、1片74LS04、1片74LS132组成。CLK0是6MHz,输出时钟为该CLK0的2分频(CLK1),4分频(CLK2),8分频(CLK3),16分频(CLK4),相应输出插孔(CLK0~assume cs:code
org 100h
start: mov dx,04a6h
mov al,70h
out dx,al
mov dx,04a2h
mov al,02h
out dx,al
mov al,0h
《微型计算机原理及应用》习题答案和实验
《微型计算机原理及应用》习题参考答案及实验项目[第1章]1.1题(1) 64H(2) DCH(3) ECH(4) 14H1.2题(1) 0110 0101 0111 1100(2) 1101 1010 1000 00001.3题用3个异或门。
其中,第1个异或门输入D3~D0,第2个异或门输入D7~D4;这两个异或门的输出送第3个异或门的输入端,由这个异或门输出奇偶校验位。
1.4题用8个异或门和一个与门。
其中,第1个异或门输入D0和Q0,第2个异或门输入D1和Q1,……第8个异或门输入D7和Q7;这8个异或门的输出送与门的输入端,由与门输出比较结果。
1.5题(1) 2131MB/s(2) 3200MB/s[第2章]2.1题(1)C=0 P=1 A=0 Z=0 S=1 O=1(2)C=1 P=0 A=1 Z=0 S=1 O=0(3)C=0 P=1 A=1 Z=0 S=0 O=02.2题参考本书图2-7。
其中,8086的MN/ MX 改接+5V;ALE、DEN和DT/ R信号改由8086输出;取消8086输出的S2~ S0信号,去掉总线控制器8288。
2.3题:参考2.3.1节。
2.4题:参考2.3.2节。
2.5题:参考2.3.3节。
2.6题:参考表2-2。
[第3章]3.1题(1) MOV AX,0700HPUSH AXPOPF(2) MOV AL,45HADD AL,35HDAA(3) MOV AL,86HSUB AL,26HDAS(4) MOV AL,08HMOV BL,07HMUL BLAAM(5) MOV AX,0608HMOV BL,08HAADDIV BL3.2题[403H][402H][401H][400H]=508850883.3题MOV SI,OFFSET MULD MOV DI,OFFSET RESULT MOV BL,05HMOV CX,4MOV DH,0AGAIN: MOV AL,[SI]MUL BLAAMADD AL,DHAAAMOV [DI],ALMOV DH,AHINC SIINC DILOOP AGAINHLT3.4题MOV SI,OFFSET DBUF1 MOV DI,OFFSET DBUF2 MOV CX,100AGAIN: MOV AL,[SI]CMP AL,50HJNA NEXTMOV [DI],ALINC DINEXT: INC SILOOP AGAINHLT3.5题(1) BX=0002H (7) BX=02B1H(2) BX=0FC6H (8) BX=2B18H(3) BX=F539H (9) BX=82B1H(4) BX=0FC4H (10) BX=2B18H(5) BX=2B18H (11) BX=02B1H(6) BX=02B1H3.6题(1) AX=10H(2) BX=05A8H(3) CL=06H CH=00H3.7题MOV SI,OFFSET STR1MOV DI,OFFSET STR2ADD DI,100MOV CX,100CLDREP MOVSBHLT3.8题MOV BX,100SUB BX,4MOV DX,0CLDAGAIN:MOV SI,OFFSET STR1ADD SI,DXMOV DI,OFFSET STR2MOV CX,5REPE CMPSBJZ FOUNDINC DXDEC BXJNZ AGAINMOV DL,’N’MOV AH,2INT 21HJMP EXITFOUND:MOV DL,’Y’MOV AH,2INT 21HEXIT: MOV AH,4CHINT 21H[第4章]4.1题(1) AX=AA88H(2) AL=33H(3) AL=40H AH=00H4.2题DATA SEGMENTSTR1 DB ’ABCDE’,95 DUP(′E′)DATA ENDSEDATA SEGMENTSTR2 DB ’12345’,95 DUP(′5′),100 DUP(?) EDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:EDATA START: MOV AX,DATAMOV DS,AXMOV AX,EDATAMOV ES,AXMOV SI,OFFSET STR1MOV DI,OFFSET STR2ADD DI,100MOV CX,100CLDREP MOVSBHLTCODE ENDSEND START4.3题DATA SEGMENTSTR1 DB ′ABCDE12345′,90 DUP(′A′) COUNT1 EQU $-STR1DATA ENDSEDATA SEGMENTSTR2 DB ′E1234′COUNT2 EQU $-STR2EDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:EDATA START: MOV AX,DATAMOV DS,AXMOV AX,EDATAMOV ES,AXMOV BX,COUNT1SUB BX,COUNT2-1MOV DX,0CLDAGAIN: MOV SI,OFFSET STR1ADD SI,DXMOV DI,OFFSET STR2MOV CX,COUNT2REPE CMPSBJZ FOUNDINC DXDEC BXJNZ AGAINMOV DL,’N’MOV AH,2INT 21HJMP EXITFOUND: MOV DL,’Y’MOV AH,2INT 21HEXIT: MOV AH,4CHINT 21HCODE ENDSEND START4.4题DATA SEGMENTVAR DB 98H,78H,86H,22H,46H,2AH,3BH COUNT EQU $-VARDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV CX,COUNTDEC CXL1: PUSH CXPUSH BXMOV AL,[BX]INC BXL2: CMP AL,[BX]JBE L3XCHG AL,[BX]L3: INC BXLOOP L2POP BXMOV [BX],ALINC BXPOP CXLOOP L1HLTCODE ENDSEND START4.5题DATA SEGMENTMESS DB ’WELCOME’,0DH,0AH,’$’DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA START: MOV AX,DATAMOV DS,AXAGAIN: MOV AH,2INT 1AHMOV BL,DHCALL DISPADD BL,10HCMP BL,60HJB NEXTSUB BL,60HNEXT: MOV AH,2INT 1AHMOV AL,DHCMP, AL,BLJNZ NEXTMOV AH,1INT 16HJNZ EXITJMP AGAINDISP PROC NEARMOV DX,OFFSET MESSMOV AH,9INT 21HRETDISP ENDPEXIT: MOV AH,4CHINT 21HCODE ENDSEND START4.6题CODE SEGMENTASSUME CS:CODESTART: MOV AH,2CHINT 21HMOV BL,CHMOV CL,4CALL BCDROL BL,CLCALL DISPROL BL,CLCALL DISPCALL CRLFMOV AH,1INT 16HJNZ EXITJMP STARTBCD PROC NEARMOV AL,BLMOV BL,10CBWDIV BLSHL AL,CLOR AL,AHMOV BL,ALRETBCD ENDPDESP PROC NEARMOV DL,BLAND DL,0FHADD DL,3OHMOV AH,2INT 21HRETDISP ENDPCRLF PROC NEARMOV DL,0DHMOV AH,2INT 21HMOV DL,0AHINT 21HRETCRLF ENDPEXIT: MOV AH,4CHINT 21HCODE ENDSEND START[第5章]5.1题用8片2164。
完整版微机原理课后习题参考答案.doc
完整版微机原理课后习题参考答案.doc2篇微机原理课后习题参考答案(一)微机原理课后习题是帮助学生巩固所学知识,提高学习效果的一种重要方式。
通过解答习题,学生可以检验自己的理解程度和掌握技能,同时也能发现知识的不足之处,以便及时调整学习方法和加强练习。
以下是微机原理课后习题的参考答案,供学生参考:1. 请简述微机的基本组成部分。
答:微机的基本组成部分包括中央处理器(CPU)、内存、输入输出设备和总线。
其中,中央处理器是微机的控制中心,负责数据的处理和指令的执行;内存是用于存储数据和程序的地方,包括随机访问存储器(RAM)和只读存储器(ROM);输入输出设备用于与外部设备进行信息交换,包括键盘、显示器、打印机等;总线是连接中央处理器、内存和输入输出设备的通道,用于数据传输和控制信号传递。
2. 什么是存储器的地址空间?答:存储器的地址空间是计算机可寻址的存储单元的集合。
每个存储单元都有一个唯一的地址,用于在存储器中定位该存储单元。
地址空间的大小决定了计算机可以寻址的最大存储容量。
常见的存储器地址空间包括物理地址空间和逻辑地址空间。
物理地址空间是实际存在的存储单元的集合,由硬件决定;逻辑地址空间是程序员或操作系统所见到的地址空间,它可以比物理地址空间大或小,具体取决于使用的地址转换机制。
3. 简述中央处理器的主要功能。
答:中央处理器的主要功能包括指令的执行和数据的处理。
指令的执行是指根据程序中的指令,按照特定的指令集进行操作,包括数据传输、算术运算、逻辑运算等。
数据的处理是指对输入的数据进行处理,可以进行各种运算和逻辑操作,生成相应的结果。
除了执行指令和处理数据外,中央处理器还负责控制系统的运行,包括控制信号的发出和时序的控制,以确保各个组成部分协调工作。
4. 什么是总线?答:总线是微机中各个组成部分之间进行数据传输和控制信号传递的通道。
它可以看作是计算机内部各个部分之间进行信息交换的公共通道。
总线通常分为数据总线、地址总线和控制总线三种类型。
(模板4)微型计算机原理与接口技术实验指导答案
实验一 DEBUG的启动及其基本命令的使用一、实验学时1学时。
二、实验目的掌握DEBUG 的基本命令及其功能。
三、实验设备计算机。
四、实验内容DEBUG是专门为汇编语言设计的一种调试工具,它通过步进,设置断点等方式为汇编语言程序员提供了非常有效的调试手段。
1、DEBUG程序的启动在DOS提示符下,可键入命令:C>DEBUG[d:][path][文件名][ 参数1][参数2]其中文件名是被调试文件的名称,它须是执行文件(EXE),两个参数是运行被调试文件时所需要的命令参数,在DEBUG程序调入后,出现提示符“-”,此时,可键入所需的DEBUG 命令。
在启动DEBUG时,如果输入了文件名,则DEBUG程序把指定文件装入内存。
用户可以通过DEBUG的命令对指定文件进行修改、显示和执行。
如果没有文件名,则是以当前内存的内容工作,或者用命名命令和装入命令把需要的文件装入内存,然后再用DEBUG的命令进行修改、显示和执行。
2、DEBUG的主要命令(1)汇编命令A,格式为:-A[地址]该命令从指定地址开始允许输入汇编语句,把它们汇编成机器代码相继存放在从指定地址开始的存储器中。
(2)反汇编命令U,有两种格式:1)-U[地址]该命令从指定地址开始,反汇编32个字节,若地址省略,则从上一个U命令的最后一条指令的下一个单元开始显示32个字节。
2)-U范围该命令对指定范围的内存单元进行反汇编,例如:-U 04BA:0100 0108或–U 04BA:0100 L9此二命令是等效的。
(3)运行命令G,格式为:-G [=地址1][地址2[地址3。
]]其中地址1规定了运行起始地址,后面的若干地址均为断点地址。
(4)追踪命令T,有两种格式:1)逐条指令追踪:-T[=地址]该命令从指定地址起执行一条指令后停下来,显示寄存器内容和状态值。
2)多条指令追踪:-T[=地址][值]该命令从指定地址起执行n条命令后停下来,n由[值]确定。
微型计算机原理及应用(微机实验课后答案)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV SI,OFFSET DATA1
MOV DI,OFFSET JIEGUO
MOV CX,0005H
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
LEA SI,DATA1
LEA DI,DATA2
MOV CX,0005H
DATA2 DB 5 DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV DI,OFFSET DATA1
MOV SI,OFFSET DATA2
ADD AL,30H
A2: MOV [SI],AL
INC SI
PUSH DX
MOV AX,BX
MOV BX,0010H
MOV DX,0000H
DIV BX
MOV BX,AX
MOV AL,[SI]
MOV AH,00H
A1:INC SI
LOOP A1
STOP: HLT
INT 03H
CODE ENDS
END START
1.2
STACK SEGMENT STACK
DW 64 DUP(?)
STACK ENDS
工业用微型计算机实验及答案
实验一:利用DEBUG调试程序进行寻址方式与指令系统实验一、实验目的:1、联系掌握DEBUG调试程序的使用2、加深对汇编语言指令、机器码、寻址方式等基本内容的理解二、实验设备:计算机三、实验内容:1、DEBUG调试程序的启动2、练习D、E、F、R、A、U、T、G、N、L、W、I、O、Q等指令的使用,观察其运行结果,掌握这些命令的使用方法3、通过DEBUG程序输入一汇编语言程序段,单步跟踪调试,观察寄存器的变化和指令执行的结果,加深对指令的理解。
四、DEBUG调试程序的使用一)、DEBUG的启动在DOS系统提示符下,运行DEBUG命令即可启动。
命令格式:DEBUG [文件名全称] 功能:启动DEBUG调试程序,并把指定名字的文件装载入内存,以供调试。
说明:启动DEBUG,实际就是让计算机执行DEBUG.EXE这个调试程序。
若该程序不在当前目录下,需要在命令中指定该程序所在的位置路径(包括(包括其所在磁盘和文件夹)。
文件名全称指定要调试的文件名及其所在的位置路径。
若指定该选项,则在启动DEBUG时把该文件装载入内存,以供调试,该文件一般是EXE文件或COM文件。
若不指定该选项,则只启动DEBUG,不装载文件。
二)、DEBUG常用命令1、D——显示内存单元内容的命令。
2、E——输入内容(修改内存单元内容)命令。
3、F——填充内容(修改内存单元内容)命令4、R——显示和修改寄存器内容命令5、A——汇编命令6、U——反汇编命令7、T——逐条指令跟踪执行命令8、G——程序运行命令9、N——命名命令10、L——装入内存命令11、W——存盘命令。
12、I——端口输入命令13、O——端口输出命令14、Q——退出DEBUG命令五、DEBUG操作步骤:1、DEBUG的进入与退出2、观察及修改CPU内部各寄存器3、观察及修改内存单元的内容4、输入程序5、单步执行程序6、反汇编程序7、执行一段程序六、利用DEBUG学习寻址方式P80 例2-16七、利用DEBUG学习程序段P81 例2-18 2-20八、实验总结实验二 8255并行接口应用实验一.实验目的1. 掌握8255工作方式的编程设计。
西安电子科技大学微机原理上机要求及必做题目答案(汇编实现)
西安电子科技大学微机原理上机必做题目及汇编程序答案1、编写求十进制数12678532与21736543之和的程序,并将和以十进制数的形式送屏幕显示。
编程要求与提示:[1]两个加数均以压缩(组合)十进制数形式存放在ADD1和ADD2为首址的存贮器单元。
[2]和以压缩十进制数的形式存入SUM以下单元。
[3]将和送到屏幕显示部分功能的实现采用子程序的形式。
汇编语言实现如下:STACK SEGMENT STACKDB10H DUP(00)STACK ENDSDATA SEGMENTADD1DB12H,67H,85H,32HADD2DB21H,73H,65H,43HSUM DB4H DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTART:MOV AX,DATAMOV DS,AXMOV AX,DATAMOV ES,AXMOV AX,STACKMOV SS,AXLEA SI,ADD1[3]LEA BX,ADD2[3]LEA DI,SUM[3]MOV CX,4CLCL1:MOV AL,[SI]ADC AL,[BX]DAAMOV[DI],ALDEC SIDEC BXDEC DILOOP L1CALL DISPAL;-------------------------------------EXITPROC:MOV AH,4CH;结束程序MOV AH,1INT21H;-------------------------------------DISPAL PROC NEARPUSH AXPUSH BXPUSH CXPUSH DXPUSH DILEA DI,SUMMOV CX,4DISPAL2:MOV AL,[DI]SHR AL,1SHR AL,1SHR AL,1SHR AL,1MOV AH,2MOV DL,ALADD DL,30HINT21HMOV AL,[DI]AND AL,0FHMOV AH,2MOV DL,ALADD DL,30HINT21HINC DILOOP DISPAL2POP DIPOP DXPOP CXPOP BXPOP AXRETDISPAL ENDPCODE ENDSEND START2、有一个首地址为A的N字数组,请编程序使该数组中的数按从大到小的次序排列。
微机原理作业参考答案(1,2,3章)
微机原理作业参考答案第一次:P16 3,4,5,71.3 冯。
诺依曼计算机的结构特点是什么?答:参考P51.4 典型微机有哪三大总线?它们传送的是什么信息?答:有数据总线(DB,双向,传送数据),地址总线(AB,单向,传送CPU要访问的内存单元地址或IO端口的端口号),控制总线(CB,双向,传送总线控制信息)。
1.5 什么叫微处理器?什么叫微型计算机?什么叫微型计算机系统?三者有什么区别和联系?答:微型计算机系统可分为三个层次,即:微处理器,微型计算机和微型计算机系统。
微处理器即CPU,是一片主要包含运算器、控制器、寄存器组和总线访问逻辑电路的芯片;微型计算机是以微处理器为核心,配上存储器(ROM、RAM)、I/O接口电路及系统总线等所组成的计算机;以微型计算机为中心,配以相应的外围设备以及控制微型计算机工作的软件,就构成了完整的微型计算机系统。
1.7 试用示意图说明内存单元的地址和内存单元的内容,二者有何联系和区别?答:内存单元、内存单元的地址、内存单元的内容---这三个名词可类比为:房子、房子的地址、房子里住的人。
也就是说,内存单元是物理器件,8086CPU有二十根地址线,最多可访问1M(2^20)个内存单元。
内存单元按顺序被分配一个地址---第一个单元:0,第二个单元:1...最后一个单元:FFFFFH(或1048575D)。
每个内存单元可存储一个字节的数据。
图略,参考P7。
第二次作业:P54 1,2,3,6,7,9,11,132.1 8086从功能上分为哪两个部件?每个工作部件的功能、组成和特点分别是什么?答:分为执行部件(EU)和总线功能部件(BIU)两部分。
EU功能:执行算术/逻辑命令。
BIU功能:访问内存或I/O端口,从中读/写数据和读指令。
EU组成:ALU、EU控制器、寄存器组(通用、指针变址、标志)BIU组成:指令队列、总线控制逻辑、物理地址生成逻辑(地址加法器、段寄存器、IP)EU、BIU的特点和更详细的功能说明:参考P19。
通信工程专业微机原理与应用上机考试题目及答案代码
1、(80分)(1)编程将D1、D2两个存储单元中的无符号字节数相加,结果放到D3存储单元(结果不超过255)。
(2)设8255A的A口接8个发光二极管,B口接8个开关,要求编一程序使8个开关控制对应的发光二极管的亮和灭。
已知8255A的端口地址从300H-303H。
2、(80分)(1)编程将D1、D2两个存储单元中的无符号字节数相减,结果放到D3存储单元(结果不超过255)。
(2)设8255A的B口接8个发光二极管,A口接8个开关,要求编一程序使8个开关控制对应的发光二极管的亮和灭。
已知8255A的端口地址从300H-303H。
3、(80分)(1)假设0~9的平方值存放在DATA1开始的内存中,取出“3”所对应的平方值。
(2)设8255A的C口的8根数据线接8个发光二极管,A口的8根数据线接8个开关,要求编一简单程序使8个开关控制对应的发光二极管的亮和灭。
已知8255A的端口地址从300H-303H。
4、(80分)(1)设8255A的C口的8根数据线接8个发光二极管,A口的8根数据线接8个开关,要求编一简单程序使8个开关控制对应的发光二极管的亮和灭。
已知8255A的端口地址从300H-303H。
(2)X、Y、Z都为字节定义的数据,将X+Y+Z将结果放在SUM单元中(结果不超过255)。
5、(80分)(1)设8255A的B口接8个发光二极管,C口接8个开关,要求编一程序使8个开关控制对应的发光二极管的亮和灭。
已知8255A的端口地址从300H-303H。
(2)X、Y、Z都为字节定义的数据,将X+Y-Z将结果放在SUM单元中(结果不超过255)。
6、(80分)(1)8253的计数器2工作在方式0,设计数初值为4,输出OUT2接发光二极管,CLK2接手动脉冲信号,请问,按几下手动脉冲发生器使发光二极管熄灭?电路连接如下图所示。
(2)编程将缓冲区buf1中的8个字数据传送到buf2开始的缓冲区中。
7、(80分)(1)8253的计数器1工作在方式3,设计数初值为4,输出OUT1接发光二极管,CLK1接手动脉冲信号,按几下手动脉冲发生器,可改变发光二极管的状态?电路连接如下图所示。
微机原理上机答案(西电)
微机原理上机答案(西电)上机作业(三)编写如下程序,并在机器上调试成功。
程序采用菜单式选择,可以接收用户从键盘输入的五个命令(1-5),各命令功能分别为:(1)按下“1”键,完成字符串小写字母变成大写字母。
用户输入一由英文大小写字母或数字0-9组成的字符串(以回车结束),程序逐个检查字符串中各字符,将原串中小写字母变成大写字母,其他字符不变,并在屏幕上显示。
用户按任一键,重做,按ESC键,返回主菜单。
(2)按下“2”键,完成找最大值(二选一)。
a.接收用户输入的可显示字符串(以回车结束),程序将其中ASCII码值最大的字符显示出来;b.接收用户输入若干个无符号8位数(以空格或逗号为分隔符,以回车结束),程序将其中最大的数显示出来。
用户按任一键,重做,按ESC键,返回主菜单。
(3)按下“3”键,完成排序(二选一)。
a.接收用户输入的可显示字符串,以回车结束。
程序按ASCII码值大小由大到小排序并输出显示;b.接收用户输入若干个有符号8位数(以空格或逗号为分隔符,以回车结束),程序将其中最大的数显示出来。
用户按任一键,重做,按ESC键,返回主菜单。
(4)按下“4”键,显示时间。
首先提示用户对时,即用户输入时、分、秒(以空格或逗号为分隔符,以回车结束),然后,在屏幕上不断显示时间,格式为:XX(时): XX(分): XX(秒)最好定点显示。
用户按任一键,重新对时,按ESC键,返回主菜单。
(5)按下“5”键,结束程序运行,返回系统提示符。
程序代码:STACK SEGMENT STACKDB 256 DUP(?)TOP LABEL WORDSTACK ENDSDA TA SEGMENTTABLE DW G1, G2, G3, G4, G5STRING1 DB '1. Change small letters into capital letters of string;', 0DH, 0AH, '$' STRING2 DB '2. Find the maximum of string;', 0DH, 0AH, '$'STRING3 DB '3. Sort for datas;', 0DH, 0AH, '$'STRING4 DB '4. Show Time;', 0DH, 0AH, '$'STRING5 DB '5. Exit.', 0DH, 0AH, '$'STRINGN DB 'Input the number you select (1-5) : $'IN_STR DB 'Input the string (including letters & numbers, less than 60 letters) :', 0DH, 0AH, '$' PRESTR DB 'Original string : $'NEWSTR DB 'New string : $'OUT_STR DB 'The string is $'MAXCHR DB 'The maximum is $'IN_NUM DB 'Input the numbers (0 - 255, no more than 20 numbers) : ', 0DH, 0AH, '$' OUT_NUM DB 'Sorted numbers : ', 0DH, 0AH, '$'IN_TIM DB 'Correct the time (HH:MM:SS) : $'HINTSTR DB 'Press ESC, go back to the menu; or press any key to play again!$' KEYBUF DB 61DB ?DB 61 DUP (?)NUMBUF DB ?DB 20 DUP (?)DA TA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATA, SS:STACKSTART:MOV AX, DATAMOV DS, AXMOV AX, STACKMOV SS, AXMOV SP, OFFSET TOPMAIN: CALL FAR PTR MENU ; 设置显示器AGAIN:MOV AH, 2MOV BH, 0 ; 页号MOV DL, 41 ; 列号MOV DH, 10 ; 行号INT 10H ; 光标位置设置MOV AH, 1INT 21HCMP AL, '1'JB AGAINCMP AL, '5'JA AGAINSUB AL, '1' ; N-1SHL AL, 1 ; (N-1)*2CBW ; AL->AXLEA BX, TABLEADD BX, AXJMP WORD PTR [BX]G1:CALL FAR PTR CHGLTRMOV AH, 8INT 21HCMP AL, 1BHJZ MAINJMP G1G2:CALL FAR PTR MAXLTRMOV AH, 8INT 21HCMP AL, 1BHJZ MAINJMP G2G3:CALL FAR PTR SORTNUMMOV AH, 8INT 21HCMP AL, 1BHJZ MAINJMP G3G4:CALL FAR PTR TIMCHKMOV AH, 8INT 21HCMP AL, 1BHJZ MAINJMP G4G5:MOV AH, 4CHINT 21HMENU PROC FAR ; 显示主界面;设置显示器方式MOV AH, 0MOV AL, 3;MOV BL, 0;INT 10H ; 清屏MOV AH, 2MOV BH, 0 ; 页号MOV DL, 5 ; 列号MOV DH, 5 ; 行号INT 10H ; 光标位置设置MOV AH, 9LEA DX, STRING1INT 21HMOV AH, 2MOV DL, 5 ; 列号MOV DH, 6 ; 行号INT 10H ; 光标位置设置MOV AH, 9LEA DX, STRING2INT 21HMOV AH, 2MOV DL, 5 ; 列号MOV DH, 7 ; 行号INT 10H ; 光标位置设置MOV AH, 9LEA DX, STRING3INT 21HMOV AH, 2MOV DL, 5 ; 列号MOV DH, 8 ; 行号INT 10H ; 光标位置设置MOV AH, 9LEA DX, STRING4INT 21HMOV AH, 2MOV DL, 5 ; 列号MOV DH, 9 ; 行号INT 10H ; 光标位置设置MOV AH, 9LEA DX, STRING5INT 21HMOV AH, 2MOV DL, 5 ; 列号MOV DH, 10 ; 行号INT 10H ; 光标位置设置MOV AH, 9LEA DX, STRINGNINT 21HRETMENU ENDPCHGLTR PROC FAR ; 将输入字符串中小写字母便换成大写字母RECHG:;设置显示器方式MOV AH, 0MOV AL, 3MOV BL, 0INT 10H ; 清屏MOV AH, 2MOV BH, 0 ; 页号MOV DL, 5 ; 列号MOV DH, 5 ; 行号INT 10H ; 输入提示光标位置设置MOV AH, 9LEA DX, IN_STRINT 21H ; 输入字符串提示MOV AH, 2MOV DL, 5 ; 列号MOV DH, 6 ; 行号INT 10H ; 输入字符串光标位置设置MOV AH, 0AHLEA DX, KEYBUFINT 21H ; 输入字符串CMP KEYBUF + 1, 0JZ RECHG ; 判断输入字符串是否为空串LEA BX, KEYBUF + 2MOV AL, KEYBUF + 1CBWMOV CX, AXADD BX, AXMOV BYTE PTR [BX], '$' ; 在输入字符串尾加结束标志$MOV AH, 2MOV BH, 0 ; 页号MOV DL, 5 ; 列号MOV DH, 7 ; 行号INT 10H ; 源字符串提示光标位置设置MOV AH, 9LEA DX, PRESTRINT 21H ; 输出源字符串提示MOV AH, 9LEA DX, KEYBUF + 2INT 21H ; 输出源字符串LEA BX, KEYBUF + 2LCHG:CMP BYTE PTR [BX], 61HJB NOCHGAND BYTE PTR [BX], 0DFHNOCHG:INC BXLOOP LCHG ; 将字符串中小写字母转换成大写字母MOV AH, 2MOV BH, 0 ; 页号MOV DL, 5 ; 列号MOV DH, 8 ; 行号INT 10H ; 新字符串提示光标位置设置MOV AH, 9LEA DX, NEWSTRINT 21H ; 输出新字符串提示MOV AH, 9LEA DX, KEYBUF + 2INT 21H ; 输出新字符串MOV AH, 2MOV BH, 0 ; 页号MOV DL, 5 ; 列号MOV DH, 9 ; 行号INT 10H ; 提示信息光标位置设置MOV AH, 9LEA DX, HINTSTRINT 21H ; 输出提示信息RETCHGLTR ENDPMAXLTR PROC FAR ; 在输入字符串中找出最大值REMAX:;设置显示器方式MOV AH, 0MOV AL, 3MOV BL, 0INT 10H ; 清屏MOV AH, 2MOV BH, 0 ; 页号MOV DL, 5 ; 列号MOV DH, 5 ; 行号INT 10H ; 输入提示光标位置设置MOV AH, 9LEA DX, IN_STRINT 21H ; 输入字符串提示MOV AH, 2MOV DL, 5 ; 列号MOV DH, 6 ; 行号INT 10H ; 输入字符串光标位置设置MOV AH, 0AHLEA DX, KEYBUFINT 21H ; 输入字符串CMP KEYBUF + 1, 0JZ REMAX ; 判断输入字符串是否为空串LEA BX, KEYBUF + 2MOV AL, KEYBUF + 1CBWMOV CX, AXADD BX, AXMOV BYTE PTR [BX], '$' ; 在输入字符串位加结束标志$MOV BH, 0 ; 页号MOV DL, 5 ; 列号MOV DH, 7 ; 行号INT 10H ; 源字符串提示光标位置设置MOV AH, 9LEA DX, OUT_STRINT 21H ; 输出字符串提示MOV AH, 9LEA DX, KEYBUF + 2INT 21H ; 输出字符串MOV AH, 2MOV BH, 0 ; 页号MOV DL, 5 ; 列号MOV DH, 8 ; 行号INT 10H ; 新字符串提示光标位置设置MOV AH, 9LEA DX, MAXCHRINT 21H ; 输出字符串中最大值提示MOV DL, 0LEA BX, KEYBUF + 2LCMP:CMP [BX], DLJB NOLCHGMOV DL, [BX]NOLCHG:INC BXLOOP LCMP ; 找出字符串中最大字符,放入DLMOV AH, 2INT 21H ; 输出字符串中最大字符MOV AH, 2MOV BH, 0 ; 页号MOV DL, 5 ; 列号MOV DH, 9 ; 行号INT 10H ; 提示信息光标位置设置MOV AH, 9LEA DX, HINTSTRINT 21H ; 输出提示信息RETMAXLTR ENDPSORTNUM PROC FAR ; 对输入数据组排序RESORT:;设置显示器方式MOV AH, 0MOV BL, 0INT 10H ; 清屏MOV AH, 2MOV BH, 0 ; 页号MOV DL, 5 ; 列号MOV DH, 5 ; 行号INT 10H ; 输入提示光标位置设置MOV AH, 9LEA DX, IN_NUMINT 21HMOV AH, 2MOV DL, 5 ; 列号MOV DH, 6 ; 行号INT 10H ; 输入数据组光标位置设置MOV AH, 0AHLEA DX, KEYBUFINT 21H ; 输入数据组字符串CALL CIN_INT ; 字符串转换成数据串CMP AL, 0JZ RESORT ; 判断数据串是否有错CMP NUMBUF, 0JZ RESORT ; 判断数据串是否为空MOV AH, 2MOV BH, 0 ; 页号MOV DL, 5 ; 列号MOV DH, 7 ; 行号INT 10H ; 输出提示光标位置设置MOV AH, 9LEA DX, OUT_NUMINT 21H ; 输出数据串提示MOV AH, 2MOV BH, 0 ; 页号MOV DL, 5 ; 列号MOV DH, 8 ; 行号INT 10H ; 输出数据组光标位置设置CALL FAR PTR MPSORT ; 数据组排序CALL FAR PTR INT_OUT ; 数据组的输出MOV AH, 2MOV BH, 0 ; 页号MOV DL, 5 ; 列号MOV DH, 9 ; 行号INT 10H ; 提示信息光标位置设置MOV AH, 9LEA DX, HINTSTRINT 21H ; 输出提示信息RETSORTNUM ENDPCIN_INT PROC NEAR ; 读入整型数; 入口参数:无; 出口参数为:AL(有无错误标志,0为有,1为无)MOV CL, KEYBUF + 1LEA SI, KEYBUF + 2MOV CH, 0 ; 数据组数据个数置0MOV DH, 10MOV AL, 0 ; 当前数据x=0MOV DL, 0 ; 有无数据标志置0,即无数据FNDNUM:CMP BYTE PTR [SI], ' 'JZ ADDNUM ; 判断当前字符是否为空格CMP BYTE PTR [SI], '0'JB ERRNUMCMP BYTE PTR [SI], '9'JA ERRNUM ; 判断当前字符是否在'0'-'9'之间MOV DL, 1 ; 有无数据标志置1,即有数据MUL DHXOR BH, BHMOV BL, [SI]ADD AX, BXSUB AX, '0' ; 计算出当前数据xCMP AH, 0JA ERRNUM ; 判断x是否越界JMP NEXTADDNUM:CMP DL, 1JNZ NEXT ; 判断是否有数据INC CH ; 数据组数据个数加1CALL ADDNEWMOV DL, 0MOV AL, 0 ; 清零NEXT:INC SIDEC CLCMP CL, 0JNZ FNDNUM ; 依次检查各字符CMP DL, 1JNZ TOTAL ; 判断是否有未加入的数据INC CHCALL ADDNEWTOTAL:MOV NUMBUF, CH ; 置数据组数据个数MOV AL, 1 ; 输入数据无错误JMP CRTNUMERRNUM:MOV AL, 0 ; 输入数据有错误CRTNUM:RETCIN_INT ENDPADDNEW PROC NEAR ; 增加新数; 入口参数:CH(数据组数据个数)、AL(当前数据x); 出口参数:无PUSH AXLEA BX, NUMBUFMOV AL, CHCBWADD BX, AXPOP AXMOV [BX], ALRETADDNEW ENDPMPSORT PROC FAR ; 数据组排序MOV AL, NUMBUFCMP AL, 1JBE NOSORT ; 若只有一个元素,停止排序CBWMOV CX, AXLEA SI, NUMBUF ; SI指向数据组首地址ADD SI, CX ; SI指向数据组末地址DEC CX ; 外循环次数LP1: ; 外循环开始PUSH CXPUSH SIMOV DL, 0 ; 交换标志置0LP2: ; 内循环开始MOV AL, [SI]CMP AL, [SI - 1]JAE NOXCHGXCHG AL, [SI - 1] ; 交换操作MOV [SI], ALMOV DL, 1 ; 交换标志置1 NOXCHG:DEC SILOOP LP2POP SIPOP CXCMP DL, 1JNZ NOSORT ; 判断交换标志LOOP LP1NOSORT:RETMPSORT E NDPINT_OUT PROC FAR ; 输出数据组MOV AL, NUMBUFCBWMOV CX, AXMOV BL, 10HLEA SI, NUMBUF + 1PRINT:MOV AL, [SI]CALL OUTNUMINC SIMOV AH, 2MOV DL, ' 'INT 21HLOOP PRINTRETINT_OUT ENDPOUTNUM PROC NEAR ; 将十进制数以十六进制输出; 入口参数:AL(待转换的数据),BL(转换进制数16); 出口参数:无MOV AH, 0DIV BLPUSH AXCMP AH, 10JB PNUMADD AH, 7PNUM: ADD AH, 30HMOV DL, AHPOP AXPUSH DXCMP AL, 0JZ OUTNCALL OUTNUMOUTN:POP DXMOV AH, 2INT 21HRETOUTNUM ENDPTIMCHK PROC FAR ; 设定并显示时间;设置显示器方式MOV AH, 0MOV AL, 3;MOV BL, 0;INT 10H ; 清屏MOV AH, 2MOV BH, 0 ; 页号MOV DL, 5 ; 列号MOV DH, 6 ; 行号INT 10H ; 设置提示光标位置设置MOV AH, 9LEA DX, IN_TIMINT 21H ; 时间串提示MOV AH, 0AHLEA DX, KEYBUFINT 21H ; 输入时间串MOV BL, 10MOV AL, KEYBUF + 2SUB AL, '0'MUL BLADD AL, KEYBUF + 3SUB AL, '0'CMP AL, 0JB INV ALIDCMP AL, 24JAE INV ALID ; 判断时有效性MOV CH, ALMOV AL, KEYBUF + 5SUB AL, '0'MUL BLADD AL, KEYBUF + 6SUB AL, '0'CMP AL, 0JB INV ALIDCMP AL, 60JAE INV ALID ; 判断分有效性MOV CL, ALMOV AL, KEYBUF + 8SUB AL, '0'MUL BLADD AL, KEYBUF + 9SUB AL, '0'CMP AL, 0JB INV ALIDCMP AL, 60JAE INV ALID ; 判断秒有效性MOV DH, ALMOV DL, 0MOV AH, 2DHINT 21H ; 置系统时间INV ALID:CALL TIMERETTIMCHK ENDPTIME PROC ; 显示时间子程序;设置显示器方式MOV AH, 0MOV AL, 3;MOV BL, 0;INT 10H ; 清屏MOV AH, 2MOV BH, 0 ; 页号MOV DL, 10 ; 列号MOV DH, 9 ; 行号INT 10H ; 提示信息光标位置设置MOV AH, 9LEA DX, HINTSTRINT 21H ; 输出提示信息DISP1:MOV AH, 2MOV BH, 0 ; 页号MOV DL, 72 ; 列号MOV DH, 0 ; 行号INT 10H ; 提示光标位置设置MOV AH, 2CH ; 取系统时间,CH,CL,DH分别存放时/分/秒INT 21HMOV AL, CH ; 显示时CALL SHOWNUMMOV AH, 2MOV DL, ':'INT 21HMOV AL, CL ; 显示分CALL SHOWNUMMOV AH, 2MOV DL, ':'INT 21HMOV AL, DH ; 显示: 秒CALL SHOWNUMMOV AH,02H ; 设置光标位置MOV DX,090AHMOV BH,0INT 10HMOV BX,0018HRE: MOV CX,0FFFFH ; 延时REA: LOOP READEC BXJNZ REMOV AH, 0BH ; 或MOV AH, 01HINT 21H ; INT 16HCMP AL, 0 ; JE DISP1JZ DISP1 ; 检查键盘状态RETTIME ENDPSHOWNUM PROC ; 把AL中的数字以十进制输出; 入口参数:AL(待显示的数据); 出口参数:无CBWPUSH CXPUSH DXMOV CL, 10DIV CLADD AH, '0'MOV BH, AHADD AL, '0'MOV AH, 2MOV DL, ALINT 21HMOV DL, BHINT 21HPOP DXPOP CXRETSHOWNUM ENDPCODE ENDSEND START五、实验结果运行程序。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
DATA SEGMENT
ORG 1000H
H1 DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H
H2 DB 1 DUP(?)
TIP DB 13,10,"The input number must be a HEX (0~F), press <ESC> to quit.",13,10,'$'
H1 DB 10 DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START PROC FAR
STT:PUSH DS
SUB AX,AX
PUSH AX
Movax,dseg
Movds,ax
;==============================
MOV SI,1000H
MOV [SI],AL
CMP AL,27 ;如果按下<ESC>键,跳至QUIT
JZ QUIT
CALL DISPLAY0 ;调用DISPLAY0子程序
CALL ASCII2HEX ;调用ASCII2HEX子程序
CMP AL,0FFH ;如果AL不等于FF(出错码)则跳至CORRECT
JNZ CORRECT
MOV AH,09H
INT 21H
SUB CX,CX ;CX清零
SUB DX,DX ;DX清零
CLC ;清CF
MOV AH,1 ;输入第1个数
INT 21H
MOV CH,AL ;放入CH
SUB CH,30H ;ASCII码调整
INT 21H ;输入第2个数
MOV CL,AL ;放入CL
SUB CL,30H ;ASCII码调整
LEA DX,ERR ;打印错误信息
MOV AH,09H
INT 21H
JMP FINISH ;跳至FINISH
CORRECT:
MOV BX,OFFSET H1 ;查表
XLAT
MOV AH,0
MOV BX,0
MOV BL,AL ;分离AL的高4位和低4位,分离后AL中为高4位,BL中为低4位
ANDAL,0F0H
RET
START ENDP
CODE ENDS
END STT
实验03B
从内存1000H开始,建立19个自然递增然后又递减的数据串(0-9-0),用DEBUG查看运行结果。
程序如下:
DATA SEGMENT
ORG 1000H
H1 DB 20 DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
MOV BX,AX
MOV CX,AX
MOV DX,AX
MOV SI,AX
MOV DI,AX
MOV BP,AX
;==============================
RET
START ENDP
CODE ENDS
END STT
实验01B
将FFH送到内存1000H,1001H,1002H,1003H,1004H单元中
ADC DL,0
MOV DI,1009H
MOV [DI],DL
;==============================
RET
START ENDP
CODE ENDS
END STT
实验02B
用串传送指令把A程序的数据块(被加数、加数、和)偏移地址1000H开始的区域传递到同一数据段的偏移地址为1010H开始的区域,并利用DEBUG查看运行结果
MOV AH,2 ;打印加号
MOV DL,2BH
INT 21H
MOV AH,1 ;输入第3个数
INT 21H
MOV DH,AL ;放入DH
SUB DH,30H ;ASCII码调整
INT 21H ;输入第4个数
MOV DL,AL ;放入DL
SUB DL,30H ;ASCII码调整
ADD CL,DL ;ASCII码个位加法
MOV AX,DATA
MOV DS,AX
LEA DX,TIP ;打印TIP信息
MOV AH,09H
INT 21H
BEGIN:
MOV DL,13 ;打印换行
MOV AH,2
INT 21H
MOV DL,10 ;打印回行首
INT 21H
MOV AH,1 ;等待从键盘输入
INT 21H
MOV SI,OFFSET H2 ;保护输入
CMP CL,10;比较个位数结果是否大于10
JNC AA ;大于等于10则跳至AA
ADD CH,DH;个位不向十位进位的十位加法
JMP BB
AA: ADD CH,DH ;个位向十位有进位的十位加法
ADD CH,1
SUB CL,10
BB: MOV DL,3DH ;打印等号
MOV AH,2
INT 21H
START PROC FAR
STT:PUSH DS
SUB AX,AX
PUSH AX
;==============================
MOV SI,OFFSET H1
MOV DI,OFFSET H1
ADD DI,12H
MOVAL,0
MOV CX,10
AA: MOV [SI],AL
MOV [DI],AL
编写一个加法程序,在数据段偏移地址1000H处开始,存放有两个3字节长的数据(高位对应高地址,低位对应低地址),求这两数据(十六进制数)的和,并将结果放在两数据之后,利用DEBUG调试程序,并求解:CCBBAAH+223344H=?CCBBAA+554433H=?
程序如下:
DATA SEGMENT
ORG 1000H
MOV AX,DS ;使ES段地址与DS相同
MOV ES,AX
MOV SI,1000H
;不带最高位进位的全加器
MOV DI,1003H
MOV BX,1006H
MOV AL,[SI]
ADC AL,[DI]
MOV [BX],AL
PUSHF
;保护FR,这里其实没有必要,因为INC不会产生进位
MOVAL,0FFH
MOV DI,1000H
MOV CX,5 ;循环5次
LP1:MOV [DI],AL ;FF放入1000H-1004H中
INC DI
DEC CX
JNZ LP1
;==============================
RET
START ENDP
CODE ENDS
END STT
实验02A
PUSH AX
;==============================
MOV AX,DATA
MOV DS,AX
MOV SI,OFFSET H2
MOV AL,[SI]
MOV BX,OFFSET H1
XLAT
INC SI
MOV [SI],AL
;==============================
ERR DB 13,10,"The input number must be a HEX (0~F).",13,10,'$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START PROC FAR
STT:PUSH DS
SUB AX,AX
PUSH AX
;==============================
INT 21H
ADD CL,30H ;ASCII码调整
MOV DL,CL ;打印结果中的个位
INT 21H
MOV AH,1 ;暂停
INT 21H
;==============================
RET
START ENDP
CODE ENDS
END STT
实验03A
在数据段偏移地址0100H处开始,存放0-9的平方值(构成一个表格),任给一个自然数M在0110H单元中(0<=M<=9),查表求出M的平方值,并将结果放入0111H单元。
INC SI
INC DI
INC BX
POPF
LOOPAA
MOV DL,0 ;最高位进位
ADC DL,0
MOV DI,1009H
MOV [DI],DL
MOV SI,1000H ;串传送
MOV DI,1010H
MOV CX,5
CLD
REP MOVSW ;一次传送一个字
;==============================
程序如下:
DATA SEGMENT
ORG 1000H
H1 DB 5 DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START PROC FAR
STT:PUSH DS
SUB AX,AX
PUSH AX
;==============================
QUIT:CALL ESCAPE ;调用ESCAPE子程序
FINISH:
JMP BEGIN
;==============================
RET
START ENDP
ASCII2HEX PROC NEAR
CMP AL,30H ;ASCII转16进制子程序