微机原理实验参考答案(航大)
- 格式:doc
- 大小:76.00 KB
- 文档页数:11
《微机原理》实验参考答案实验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)将以上程序段补充成为一个完整的汇编程序。
微机原理与接口技术实验报告实验环境: Windows XP SP3实验软件:masm, link, debug, edit。
Test 1: debug命令及汇编指令和寻址的应用。
NO.1设堆栈指针SP=2000H, AX=3000H, BX=5000H;请编一程序段将AX和BX的内容进行交换。
要求:用3种方法实现。
方法一CODE SEGMENT ASSUME CS:CODE START: MOV AX,3000HMOV BX,5000H MOV CX,AX MOV AX,BX MOV BX,CX CODE ENDS END START 方法二CODE SEGMENTASSUME CS:CODESTART: MOVAX,3000HMOV BX,5000HXCHG AX,BXCODE ENDSEND START方法三CODE SEGMENTASSUME CS:CODESTART: MOVAX,3000HMOV BX,5000HPUSH AXPUSH BXPOP AXPOP BXCODE ENDSEND STARTNO.2分别执行以下指令, 比较寄存器寻址,寄存器间接寻址和相对寄存器寻址间的区别。
MOV AX,BX 寄存器寻址, 将BX内容送AXMOV AX,[BX] 寄存器间接寻址, 将DS:BX内存单元内容送AXMOV AX,10[BX] 寄存器相对寻址, 将DS:BX+10内存单元内容送AXNO.3已知有如下程序段:MOV AX, 1234HMOV CL, 4在以上程序段的基础上, 分别执行以下指令:ROL AX, CL AX=4123HROR AX, CL AX=3412HSHL AX, CL AX=4120HSHR AX, CL AX=0412HSAR AX, CL AX=0041HRCL AX, CL AX=0410HRCR AX, CL AX=0041HNO.4设有以下部分程序段:TABLE DW 10H,20H,30H,40H,50HENTRY DW 3┇LEA BX,TABLEADD BX,ENTRYMOV AX,[BX]┇要求: (1)将以上程序段补充成为一个完整的汇编程序。
南航微机原理课后练习及答案书后习题解答第一章计算机基础一、选择题1、在计算机机内部,一切信息的存取、处理和传送都是以( D )形式进行的。
A)EBCDIC码B)ASCII码C)十六进制编码D)二进制编码2、下列数据中,可能是八进制数的是( B )。
A)488 B)317 C)597 D)1893、与十进制数56等值的二进制数是( A )。
A)111000 B)111001 C)101111 D)1101104、十进制数36.875转换成二进制数是( B )。
A)110100.01 B)100100.111 C)100110.11 D)100101.1015、二进制数10101转换成十进制数是( C )。
A)25 B)23 C)21 D)226、二进制数1101.01转换成十进制数是( C )。
A)17.256 B)13.5 C)13.25 D)17.57、二进制数111010.11转换成十六进制数是( B )。
A)3ACH B)3A.CH C)3A3H D)3A.3H8、十进制正数43的八位二进制原码( B )。
A)00110101 B)00101011 C)10110101 D)101010119、十进制负数-61的八位二进制原码是( B )。
A)10101111 B)10111101 C)10101011 D)0011010110、十进制正数38的八位二进制补码是( D )。
A)00011001 B)10100110 C)10011001 D)0010011011、十进制负数-38的八位二进制补码是( B )。
A)01011011 B)11011010 C)10011001 D)0010011012、有一个八位二进制数补码是11111101,其相应的十进制数是( A )。
A)-3 B)-2 C)509 D)25313、十进制数-75用二进制数10110101表示,其表示方式是( C )。
A)原码 B)补码 C)反码 D)ASCII码14、数字字符4的ASCII码为十进制数52,数字字符9的ASCII 码为十进制数( A )。
硬件实验2.1 静态存储器扩展实验2.4 8255并行接口实验实验四 8253方波实验实验五(2)8259A中断控制器实验2.3 8254定时/计数器应用实验2.1 静态存储器扩展实验2.1.1 实验目的1. 了解存储器扩展的方法和存储器的读/写。
2. 掌握CPU对16位存储器的访问方法。
2.1.2 实验设备PC机一台,TD-PITE实验装臵一套,示波器一台。
2.1.3 实验内容编写实验程序,将0000H~000FH共16个数写入SRAM的从0000H起始的一段空间中,然后通过系统命令查看该存储空间,检测写入数据是否正确。
2.1.4 实验原理存储器是用来存储信息的部件,是计算机的重要组成部分,静态RAM 是由MOS 管组成的触发器电路,每个触发器可以存放1位信息。
只要不掉电,所储存的信息就不会丢失。
因此,静态RAM 工作稳定,不要外加刷新电路,使用方便。
但一般 图2.1 62256引脚图SRAM 的每一个触发器是由6个晶体管组成,SRAM 芯片的集成度不会太高,目前较常用的有6116(2K ×8位),6264(8K ×8位)和62256(32K ×8位)。
本实验平台上选用的是62256,两片组成32K ×16位的形式,共64K 字节。
62256的外部引脚图如图4.1所示。
本系统采用准32位CPU ,具有16位外部数据总线,即D0、D1、…、D15,地址总线为BHE #(#表示该信号低电平有效)、BLE #、A1、A2、…、A20。
存储器分为奇体和偶体,分别由字节允许线BHE #和BLE #选通。
存储器中,从偶地址开始存放的字称为规则字,从奇地址开始存放的字称为非规则字。
处理器访问规则字只需要一个时钟周期,BHE #和BLE #同时有效,从而同时选通存储器奇体和偶体。
处理器访问非规则字却需要两个时钟周期,第一个时钟周期BHE #有效,访问奇字节;第二个时钟周期BLE #有效,访问偶字节。
完整版微机原理课后习题参考答案.doc2篇微机原理课后习题参考答案(一)微机原理课后习题是帮助学生巩固所学知识,提高学习效果的一种重要方式。
通过解答习题,学生可以检验自己的理解程度和掌握技能,同时也能发现知识的不足之处,以便及时调整学习方法和加强练习。
以下是微机原理课后习题的参考答案,供学生参考:1. 请简述微机的基本组成部分。
答:微机的基本组成部分包括中央处理器(CPU)、内存、输入输出设备和总线。
其中,中央处理器是微机的控制中心,负责数据的处理和指令的执行;内存是用于存储数据和程序的地方,包括随机访问存储器(RAM)和只读存储器(ROM);输入输出设备用于与外部设备进行信息交换,包括键盘、显示器、打印机等;总线是连接中央处理器、内存和输入输出设备的通道,用于数据传输和控制信号传递。
2. 什么是存储器的地址空间?答:存储器的地址空间是计算机可寻址的存储单元的集合。
每个存储单元都有一个唯一的地址,用于在存储器中定位该存储单元。
地址空间的大小决定了计算机可以寻址的最大存储容量。
常见的存储器地址空间包括物理地址空间和逻辑地址空间。
物理地址空间是实际存在的存储单元的集合,由硬件决定;逻辑地址空间是程序员或操作系统所见到的地址空间,它可以比物理地址空间大或小,具体取决于使用的地址转换机制。
3. 简述中央处理器的主要功能。
答:中央处理器的主要功能包括指令的执行和数据的处理。
指令的执行是指根据程序中的指令,按照特定的指令集进行操作,包括数据传输、算术运算、逻辑运算等。
数据的处理是指对输入的数据进行处理,可以进行各种运算和逻辑操作,生成相应的结果。
除了执行指令和处理数据外,中央处理器还负责控制系统的运行,包括控制信号的发出和时序的控制,以确保各个组成部分协调工作。
4. 什么是总线?答:总线是微机中各个组成部分之间进行数据传输和控制信号传递的通道。
它可以看作是计算机内部各个部分之间进行信息交换的公共通道。
总线通常分为数据总线、地址总线和控制总线三种类型。
姓名:王鹏飞学号:111142222指导教师:谈娴茹实验一Debug命令及汇编指令和寻址的应用一、实验目的:1、掌握DEBUG的基本命令及其功能,学会用DEBUG调试程序;2、掌握8086CPU的指令功能,体会寄存器的作用;3、了解数据在内存的存放方式和内存操作数的几种寻址方式;4、了解指令的执行过程。
二、实验内容:1、设堆栈段指针SP=1000H,AX=4000H,BX=8000H;请编写一段程序将AX 和BX的内容进行交换。
要求:用三种不同的方法。
方法一:DATA SEGMENTBUF DB ?DATA ENDSSTACK SEGMENT STACKDB 10 DUP(0)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOV AX,4000HMOV BX,8000HMOV CX,AXMOV AX,BXMOV BX,CXCODE ENDSEND START方法二:DATA SEGMENTBUF DB ?DATA ENDSSTACK SEGMENT STACKDB 10 DUP(0)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOV AX,4000HMOV BX,8000HXCHG AX,BXCODE ENDSEND START方法三:DATA SEGMENTBUF DB ?DATA ENDSSTACK SEGMENT STACKDB 10 DUP(0)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOV AX,4000HMOV BX,8000HPUSH AXPUSH BXPOP AXPOP BXCODE ENDSEND START2、分别执行以下指令,比较寄存器寻址,寄存器间接寻址和相对寄存器寻址间的区别。
微型计算机原理及应用习题集专业班级学号姓名目录第 1 章概述 (1)第 2 章计算机中的数制与编码 (2)第 3 章微处理器及其结构 (4)第 4 章 8086/8088CPU 指令系统 (8)第 5 章汇编语言程序设计 (16)第 6 章存储器系统 (27)第 7 章中断技术 (30)第 8 章输入 /输出接口技术 (36)第 9 章串行通信技术及其接口芯片 (41)模拟试题(一)............................................................................................................................................... 错误!未定义书签。
参考答案................................................................................................................................................................. 错误!未定义书签。
模拟试题(二)............................................................................................................................................... 错误!未定义书签。
参考答案................................................................................................................................................................. 错误!未定义书签。
微型计算机原理与应用实验指导书实验程序报告学院:信息工程学院班级:电子 11-1 班姓名:LXY学号:2011202030实验一编辑、汇编、连接、调试程序的使用程序设计A设计要求(1)将FFFFH 送到AX,SI,DI,BP,DS,ES 寄存器(2)编程(利用DEBUG 调试程序,每执行一次T 命令后,记录相关寄存器内容,并判断是否正确。
)程序如下:CODE SEGMENTASSUME CS:CODESTART PROC FARSTT:PUSH DSSUB AX,AXPUSH AX;==============================MOV AX,0FFFFHMOV SI,AXMOV DI,AXMOV BP,AXMOV DS,AXMOV ES,AX;==============================RETSTART ENDPCODE ENDSEND STTB、设计要求(1)将1,2,3,4,5 分别送到数据段偏移地址为1000H,1001H,1002H,1003H,1004H,单元中。
(2)编程DATA SEGMENTORG 1000HDATA ENDSCODE SEGMENTASSUME CS:CODESTART PROC FARSTT:PUSH DSSUB AX,AXPUSH AXMOV AX,DATAMOV DS,AX;==============================MOV AL,1MOV DS:[1000H],ALMOV AL,2MOV DS:[1001H],ALMOV AL,3MOV DS:[1002H],ALMOV AL,4MOV DS:[1003H],ALMOV AL,5MOV DS:[1004H],ALRETSTART ENDPCODE ENDSEND STT实验二、加法程序设计设计内容 A、设计要求(1)在数据段偏移地址1000H 处开始,连续存放有3 字节的数据(高位对应高地址,低位对应低地址),1003H 处开始连续存放有两字节的数据(高对高,低对低),求这两数据之和,并将结果放在流量数据之后。
第一章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 超出了机器数补范围,因此出错了。
1.分别说明下列指令的源操作数和目的操作数各采用什么寻址方式。
源目的(l)MOVAX, 2048H 立即数寻址寄存器寻址(2) MOV CL, OFFH 立即数寻址寄存器寻址(3) MOV BX, [SI] 寄存器间接寻址寄存器寻址(4) MOV 5[BX], BL 寄存器寻址寄存器相对寻址(5) MOV [BP+100H],AX 寄存器寻址寄存器相对寻址(6) MOV [BX+DI], $ 立即寻址基址变址寻址(7) MOV DX, ES:[BX+SI] 基址变址寻址寄存器寻址(8) MOV VAL[BP+DI], DX 寄存器寻址相对基址加变址寻址(9) IN AL, 05H 直接寻址寄存器寻址(10) MOV DS, AX 寄存器寻址寄存器寻址2. 已知:DS=1000H, BX=0200H, SI=02H,内存10200H-10205H 单元的内容分别为10H, 2AH, 3CH, 46H, 59H, 6BH。
下列每条指令执行完后AX寄存器的内容各是什么?AX内容(1) MOV AX, 0200H (AX)=0200H⑵ MOV AX, [200H] (AX)=10H(3) MOV AX, BX (AX)=0200H(4) MOV AX, 3[BX] (AX)=46H(5) MOV AX, [BX+SI] (AX)=3CH(6) MOV AX, 2 [BX+SI] (AX)=59H6.指出下列指令中哪些是错误的,错在什么地方(1) MOV DL, AX 错误,源和目的操作数类型不匹配,DL是8位寄存器,AX是16位寄存器。
(2) MOV 8650H, AX 错误,立即数不能作为目的操作数。
(3) MOV DS, 0200H 错误,不能用立即数直接给段寄存器赋值。
(4) MOV [BX], [1200H] 错误,不能在两个存储单元之间直接传送数据(5) MOV IP, OFFH 错误,IP不能作目的操作数或不能用立即数直接给IP 寄存器赋值。
微机原理与接口技术实验报告及答案微机实验答案实验三统计学生成绩设有20个学生成绩分别56、78、67、40、87、99、63、51、74、100,90,80,68、88、55、66、84、96、45、73分。
编写程序实现统计低于60分、60-69分、70-79分、80-89分、90-99分及100分的人数,并分别存放在s5、s6、s7、s8、s9、s10单元中。
实验代码如下:data segmentscore db 56,78,67,40,87,99,63, 51,74,100,90,80,68,88,55,66,84, 96,45,73s5 db 0s6 db 0s7 db 0s8 db 0s9 db 0s10 db 0data endscode segmentassume cs: code, ds: data start: mov ax,datamov ds,axmov si,0mov cx,20lop1: cmp score[si],60jb step1cmp score[si],70jb step2cmp score[si],80jb step3cmp score[si],90jb step4cmp score[si],100jb step5inc [s10]jmp exitstep1:inc [s5]jmp exitstep2:inc [s6]jmp exitstep3:inc [s7]jmp exitstep4:inc [s8]jmp exitstep5:inc [s9]exit: inc siloop lop1mov al,s6 ; 显示s6,可用s5,s7, s8等替换(实验要求之思考题三)add al,48mov dl,almov ah,02int 21hmov ah,4chint 21h实验四查找字符实验内容试编写一个有主程序和子程序结构的程序模块。
主程序:要求从键盘接收一串字符并存于字节数组TABLE中,显示字符CHAR出现的次数。
微机原理习题第一章绪论习题与答案1.把下列二进制数转换成十进制数、十六进制数及BCD码形式。
(1) 10110010B =(2) 01011101.101B =解:(1) 10110010B = 178D = B2H = (0001 0111 1000)BCD(2) 01011101.101B = 93.625D = 5D.AH= (1001 0011.0110 0010 0101)BCD2.把下列十进制数转换成二进制数。
(1) 100D =(2) 1000D =(3) 67.21D =解:(1)100D = 01100100B(2)1000D = 1111101000B(3) 67.21D = 1000011.0011B3.把下列十六进制数转换成十进制数、二进制数。
(1) 2B5H =(2) 4CD.A5H =解:(1) 2B5H = 693D = 0010 1011 0101B(2) 4CD.A5H = 1229.6445D = 0100 1100 1101.1010 0101 B4.计算下列各式。
(1) A7H+B8H =(2) E4H-A6H =解:(1) A7H+B8H = 15FH(2) E4H-A6H = 3EH5.写出下列十进制数的原码、反码和补码。
(1) +89(2) -37解:(1) [+89 ] 原码、反码和补码为: 01011001B(2) [-37] 原码 = 10100101 B[-37] 反码 = 11011010 B[-37] 补码 = 11011011 B6.求下列用二进制补码表示的十进制数(1)(01001101)补 =(2)(10110101)补 =解:(1)(01001101)补 = 77D(2)(10110101)补 = -75D7.请用8位二进制数写出下列字符带奇校验的ASCII码。
(1)C: 1000011(2)O: 1001111(3)M: 1001101(4)P: 1010000解:(1)C:0 1000011(2)O: 0 1001111(3)M:1 1001101(4)P: 1 10100008.请用8位二进制数写出下列字符带偶校验的ASCII码。
南京航空航天大学自动化学院6-4IN AL, PORT_TCMP AL, 0FEH ;k0单独被按下,即最低位为0,其余位为高JZ NEXT1CMP AL, 0FDH ;JZ NEXT2MOV AL, 00H ;其他的情况,将灯全部不点亮OUT PORT_T, ALJMP EXITNEXT1: MOV AL, 01H ;K0被按下,LED0~LED7顺次点亮,送1则对应的灯亮MOV CX, 8LOOP1: OUT PORT_T, ALCALL DELAYROL AL, 1LOOP LOOP1JMP EXITNEXT2: MOV AL, 80H ;K1被按下,LED0~LED7反序点亮,送1则对应的灯亮MOV CX, 8LOOP2: OUT PORT_T, ALCALL DELAYROR AL, 1LOOP LOOP2EXIT: ….6-5MOV BX, OFFSET STRING OUT_TEST: IN AL, STATUSTEST AL, 80HJNZ OUT_TESTMOV AL, [BX]OUT DATAS, ALINC BXCMP AL, 0DHJNZ OUT_TEST EXIT: …6-6MOV BX, OFFSET DATABUFMOV CX, 100IN_TEST: IN AL, STATUSTEST AL, 80HJZ IN_TESTIN AL, DATASMOV [BX], ALINC BXLOOP IN_TEST6-9 略6-13执行INT 8后CPU将PSW, CS, IP压入堆栈,堆栈的情况如下图:SP 00FAH00FBH00FCH00FDH00FEH00FFHSP=00FAH, SS=0300H, IP=0040H, CS=0100H因为IF,.TF进入中断后自动为零,所以PSW=0040H.6-16IRQ3申请中断, IRQ3正在被服务, 20H, 05H6-18MOV DX, 0FFDCHMOV AL, 00010011B ;ICW1OUT DX, ALMOV DX, 0FFDDHMOV AL, 90H ;ICW2OUT DX, ALMOV AL, 00000001B ;ICW4OUT DX, AL6-21RRREG DB ?SRREG DB ?IMREG DB ?…MOV AL, 00001010B ;读IRROUT 20H, ALIN AL, 20HMOV RRREG, ALMOV AL, 00001011B ;读ISR OUT 20H, ALIN AL, 20HMOV SRREG, ALIN AL, 21H ;读IMR MOV IMREG, AL。
实验一 数据传送1、子程序Move中为什么比较SI、DI?源数据块与目标范围有可能部分重叠,需要考虑从第一个字节开始复制(顺序复制),还是从最后一个字节开始复制(倒序复制)。
源数据块与目标范围有可能部分重叠,需要考虑从第一个字节开始复制(顺序复制),还是从最后一个字节开始复制(倒序复制)。
2、编写一个程序,将DS段中的数据传送到实验仪B4区的61C256中。
说明:B4区的61C256在I/O设备区,使用、读写。
实验二 数制转换实验1. 实验内容1中将一个五位十进制数转换为二进制数(十六位)时,这个十进制数最小可为多少,最大可为多少?为什么?最小为00000,最大为65535,因为16位二进制数表示十进制数的范围是0~655352. 将一个十六位二进制数转换为ASCII码十进制数时,如何确定D i的值?Di=16位二进制数/ ; n=5,4,3,2,1,03. 在十六进制转换为ASCII码时,存转换结果后,为什么要把DX向右移四次?因为每四位二进制数表示一位16进制数,内存单元中的数据是以二进制存储的4. 自编ASCII码转换十六进制、二进制转换BCD码的程序,并调试运行。
实验三 运算类编程实验1. 求累加和程序设计,在偏移地址为1000H开始依顺序填入16个字(16个16位数),利用程序求和,存放在偏移地址2000H;2. 多字节加法程序设计,参考原程序,编写个两个64位数的减法程序,结果保存到具体内存单元,调试并记录。
实验四 分支程序设计实验1、将源数据首址改为3100H,目的数据地址改为310A,再加以验证(注意单步调试);2、将源数据首址改为310AH,目的数据地址改为3100,再加以验证(注意单步调试)。
实验六 排序程序设计实验1、注意两个循环是如何循环的,如果想减少判断次数,比如说几次交换后就不再有数据交换了,如何修改程序来减少程序执行时间;2、编一程序把3000H-3009H中内容按从大到小排列;如果是有符号数怎么改写程序。
南昌航空大学信息工程学院实验报告课程名称:微机原理与接口技术 _ 学号: _____________ _ 姓名:__________ ____ 指导教师:_周卫民_________________ 成绩:________________________南昌航空大学实验报告课程名称:微机原理实验名称:调试程序DEBUG的使用班级:学生姓名:学号:教师评定:签名:一、实验要求:调试程序DEBUG的使用。
二、实验内容:DEBUG.EXE是DOS提供的用于调试可执行程序的工具软件,是汇编语言程序设计中常用的调试工具。
在DEBUG环境下,不但可以调试经汇编、连接后生成的可执行程序,也可以编写简单的程序。
①在DOS提示符下键入:DEBUG ↙(表示回车)Debug执行,屏幕显示提示符“-”,说明计算机当前处于DEBUG的管理之下,可接受、并执行DEBUG命令。
②在DOS提示符下键入:DEBUG [路径\]文件名↙DEBUG执行,并将指定文件装入内存,供调试。
如不指定被调试程序,DEBUG设置所有段寄存器的值相同,并指向最低的、可用的段地址;SP指向本段的尾部;IP指向本段的0100H单元;其它通用寄存器和所有状态标志清0。
如带入的被调试程序扩展名不是.EXE,则BX、CX包含被调试文件长度(字节数,BX为高位),其他同上。
(带入.COM程序同此)如带入的被调试程序扩展名是.EXE,则需要重新定位。
DS=ES指向当前最低的、可用的段地址(PSP的首字节);CS:IP和SS:SP根据被调试程序确定,分别指向代码段和堆栈段;BX.CX为文件长度,其它通用寄存器和状态标志清0。
演示:DEBUG的两种启动方法1.命令格式命令字母[参数]字母不分大小写;只使用16进制数,不加H;分割符只在两个数值之间是必须的,命令和参数之间可有可无;键入回车键执行命令,Ctrl+Break或Ctrl+C中止命令的执行;如命令不符合DEBUG的规则,则提示“error”并使用“^”指示错误位置。
《微机原理与接口技术》实验报告淮海工学院机械工程学院实验报告书课程名:微机原理与接口技术题目:实验一:程序的编辑、汇编、连接和调试班级:装备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、设计题五、结果分析与实验体会通过这次实验,我对汇编语言程序设计上机操作的基本方法有了初步掌握。
《微机原理》实验参考答案实验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)将以上程序段补充成为一个完整的汇编程序。
答:DATA SEGMENTTABLE DW 10H,20H,30H,40H,50HENTRY DW 3DATA ENDSCODE SEGMENTASSUME DS:DATA,CS:CODESTART: MOV AX,DATAMOV DS,AXLEA BX,TABLEADD BX,ENTRYMOV AX,[BX]MOV AH,4CHINT 21HCODE ENDSEND START(2)AX=3000H实验2 分支与DOS中断功能调用程序设计实验一、实验目的1、掌握条件转移、无条件转移指令的功能及应用;2、掌握分支程序的设计、编写、调试和运行方法。
3、掌握1号、2号和9号功能调用及其程序设计方法。
二、实验内容1、编程求|X-Y|,结果放在RESULT单元中。
X和Y都为16位操作数。
DA TA SEGMENTX DW 1234HY DW 5678HRESULT DW ?DA TA ENDSCODE SEGMENTASSUME DS:DATA,CS:CODESTART: MOV AX,DATAMOV DS,AXMOV AX,XSUB AX,YJAE NEXT;设X,Y是不带符号数,X>=Y转移MOV AX,YSUB AX,XNEXT: MOV RESYLT,AXMOV AH,4CHINT 21HCODE ENDSEND START2、编写一程序,实现从键盘输入一个字符,判断其是不是大写字母,如果是则请输出这个大写字母,如果不是,请输出“这不是一个大写字母”的英文信息(要求:能连续输入)。
DATA SEGMENTMS1 DB ‘IT IS A BIG CAPITAL$’MS2 DB ‘IT IS NOT A BIG CAPITAL$’DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TASTART:MOV AX,DATAMOV DS,AXNEXT: MOV DX,OFFSET MS2MOV AH,1INT 21H; 1号功能调用CMP AL,0DHJZ EXITCMP AL, ‘A’JB NOCMP AL, ‘Z’JA NOMOV DX,OFFSET MS1NO: MOV AH,9INT 21HIMP NEXTEXIT:MOV AH,4CHINT 21HCODE ENDSEND START3、请编写一程序,实现将大写字母字符串转换成小写字母字符串。
设字符串的首地址为STRING,字符串的长度在N单元内。
DA TA SEGMENTSTRING DB 'I AM A STUDENT!$'N EQU $-STRINGDA TA ENDSCODE SEGMENTASSUME DS:DATA,CS:CODESTART:MOV AX,DATAMOV DS,AXMOV BX,OFFSET STRINGMOV CX,NNEXT: MOV AL,[BX]CMP AL,'A'JB NEXT1CMP AL,'Z'JA NEXT1ADD AL,20HMOV [BX],ALNEXT1:INC BXLOOP NEXTMOV AH,9MOV DX,OFFSET STRINGINT 21HMOV AH,4CHINT 21HCODE ENDSEND START4、编程显示任一寄存器(如BX)的最高位。
即若BX的最高位为1,则在屏幕上输出“1”;若BX的最高位为0,则在屏幕上输出“0”。
CODE SEGMENTASSUME CS:CODESTART: MOV DL,'1'MOV BX,8234HCMP BX,0JS SHOWMOV DL,'0'SHOW: MOV AH,2INT 21HMOV AH,4CHINT 21HCODE ENDSEND START实验3 循环结构程序设计实验一、实验目的1、掌握循环指令LOOP、LOOPZ、LOOPNZ指令的功能及使用方法。
2、掌握循环程序的设计、编写、调试和运行方法。
二、实验内容1、循环结构程序设计编写一个程序,将内存1000H开始的连续100个字节送往2000H开始的连续100个内存单元中。
要求使用三种不同的方法(不用串操作指令、用单一的串操作指令、用带重复前缀的串操作指令),下面已给出一种实现方法,请给出另外两种实现方法的源程序清单:实验程序参考清单:方法一带重复前缀的串操作指令DATA SEGMENTORG 1000HDB 100 DUP(…A‟)ORG 2000HDB 100 DUP(…B‟)DA TA ENDSCODE SEGMENTASSUME DS:DATA,ES:DATA,CS:CODESTART: MOV AX,DA TAMOV DS,AXMOV ES,AXMOV SI,1000HMOV DI,2000HMOV CX,100CLDREP MOVSBMOV AH,4CHINT 21HCODE ENDSEND START方法二不带重复前缀的串操作指令DATA SEGMENTORG 1000HDB 100 DUP(…A‟)ORG 2000HDB 100 DUP(…B‟)DA TA ENDSCODE SEGMENTASSUME DS:DATA,ES:DATA,CS:CODE START: MOV AX,DA TAMOV DS,AXMOV ES,AXMOV SI,1000HMOV DI,2000HMOV CX,100CLDNEXT: MOVSBLOOP NEXTMOV AH,4CHINT 21HCODE ENDSEND START方法三不用串操作指令,而用MOV指令DATA SEGMENTORG 1000HDB 100 DUP(…A‟)ORG 2000HDB 100 DUP(…B‟)DA TA ENDSCODE SEGMENTASSUME DS:DATA,ES:DATA,CS:CODE START: MOV AX,DA TAMOV DS,AXMOV SI,1000HMOV DI,2000HMOV CX,100NEXT: MOV AL,[SI]MOV [DI],ALINC SIINC DILOOP NEXTMOV AH,4CHINT 21HCODE ENDSEND START2、编程计算1+2+3+…+100的和。
答:用AX存放结果CODE SEGMENTASSUME CS:CODESTART: MOV AX,0MOV BX,1MOV CX,100NEXT: ADD AX,BXINC BXLOOP NEXTMOV AH,4CHINT 21HCODE ENDSEND START如果想以十进制输出显示AX中的结果则需要增加显示输出程序(感兴趣同学参考,不要求):DA TA SEGMENTMS DB 5 DUP(?)DB '$'DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TASTART:MOV AX,DATAMOV DS,AXMOV AX,0MOV BX,1MOV CX,100NEXT: ADD AX,BXINC BXLOOP NEXTMOV SI,OFFSET MSADD SI,4NEXT1:MOV DX,0MOV BX,10DIV BXADD DL,30HMOV [SI],DLDEC SICMP AX,0JZ EXITJMP NEXT1EXIT: MOV AH,9MOV DX,OFFSET MSINT 21HMOV AH,4CHINT 21HCODE ENDSEND START实验4 存储器扩展实验code segmentassume cs:codeorg 1000hStart: mov bx,8000h ;外部存储器起始地址BXmov cx,2048 ;初始化计数器RamWR: mov [bx],55aah ;将数据写入外部存储器inc bx ;地址+2inc bxloop RamWR ;地址不到8FFF则继续jmp $ ;结束code endsend Start实验5 8259应用编程实验outseg equ 0ffdch ;字形控制口outbit equ 0ffddh ;字位控制口m8259 equ 0ffe0h ;8259控制口c8259 equ 0ffe1h ;8259命令口code segmentassume cs:codeorg 1000hstart: cli ;清中断标志call intsvr ;分配中断向量call init ;8259初始化sti ;置中断标志mov dx,outbit ;选中LED第6位mov al,000001bout dx,alcall show_p ;显示"P."jmp $ ;循环等待;设置中断向量,写N=15的中断向量,中断向量表003CH-003FH单元intsvr: mov ax,0000hmov es,axmov di,003chlea ax,irq7stoswmov ax,0000hstoswret;8259初始化init: mov dx,m8259mov al,13hout dx,al ;边沿触发mov dx,c8259mov al,08hout dx,al ;基地址mov al,09hout dx,al ;写命令字mov al,7fhout dx,al ;设置IMR,只开放IQR7,屏蔽其他ret;显示"0"show_p: mov al,0 ;'0'call disp ;显示ret;查表显示子程序disp: mov dx,outseg ;字形控制口mov bx,offset ledxlat ;查表out dx,al ;送显示ret;IRQ7中断服务程序irq7: cli ;清中断标志,关中断inc al ;加一计数and al,0fh ;只保留低4位,清零高位push ax ;AX进栈保存call disp ;显示mov dx,m8259mov al,20hout dx,al ;写结束字pop ax ;恢复AXsti ;置中断标志,开中断iret ;从中断返回;字形代码表led db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h ; 0 1 2 3 4 5 6 7 db 80h,90h,88h,83h,0c6h,0a1h,86h,8eh ;8 9 A B C D E Fdb 0ch ;'P.'code endsend start。