微机基础学习知识原理实验报告.doc

收藏

编号:2603891    类型:共享资源    大小:744.02KB    格式:DOC    上传时间:2020-04-23
8
金币
关 键 词:
微机 基础 学习 知识 原理 实验 试验 报告 讲演 呈文
资源描述:
!- 《微机原理》 实 验 报 告 班级: 学号: 姓名: 指导教师: 实验日期: 实验一 实验题目 1.Debug命令及汇编指令和寻址方法 完成日期 12周-周三 一、 实验目的与要求: 1、掌握DEBUG的基本命令及其功能,学会用DEBUG调试程序; 2、掌握8086CPU指令的功能,体会寄存器的作用; 3、了解数据在指令中的存放方式和内存操作数的几种寻址方式; 4、了解指令的执行过程。 二 实验内容:1、设堆栈指针SP=1000H,AX=4000H,BX=8000H;请编一程序段将AX和BX的内容进行交换。要求:用3种方法实现。 2、分别执行以下指令,比较寄存器寻址,寄存器间接寻址和相对寄存器寻址间的区别。 MOV BX,1000H 立即寻址,将1000H送给BX MOV AX,BX 寄存器寻址,将BX内容送AX MOV AX,[BX] 寄存器间接寻址,将DS:BX内存单元内容送AX   MOV AX,20[BX] 寄存器相对寻址,将DS:BX+20内存单元内容送AX 当时DS数据段的值0B47H,每条指令执行后AX的值分别为4000H,1000H,1AEBH,BB00H。将指令中”bx”修改为dx执行指令,结果:AX值BB00H,1000H,错误,错误。错误的原因是DX不为基址寄存器。 3、已知有如下程序段: MOV AX,3421H MOV CL,4 在以上程序段的基础上,分别执行以下指令:起始时刻 CF=0,ZF=0,SF=0 CF SF ZF ROL AX,CL AX=4213H 1 0 0 ROR AX,CL AX=1342H 0 0 0 SHL AX,CL AX=4210H 1 0 0 SHR AX,CL AX=0342H 0 0 0 SAR AX,CL AX=0342H 0 0 0 RCL AX,CL AX=4211H 1 0 0 RCR AX,CL AX=2342H 0 0 0 4、设有以下部分程序段:  TABLE DW 10H,20H,30H,40H,50H ENTRY DW 3 ┇ LEA BX,TABLE ADD BX,ENTRY MOV AX,[BX] ┇ 要求:(1)将以上程序段补充成为一个完整的汇编程序。 2、编辑、调试并运行程序,记录在执行MOV AX,[BX]后AX的内容。 DATA SEGMENT TABLE DW 10H,20H,30H,40H,50H ENTRY DW 4 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX LEA BX,TABLE ADD BX,ENTRY MOV AX,[BX] MOV AH,4CH INT 21H CODE ENDS END START 二、 实验步骤与源程序(若是硬件,需有硬件连线图;若是软件,需有流程图): 实验一 答:方法一 : CODE SEGMENT ASSUME CS:CODE START: MOV AX,4000H MOV BX,8000H MOV CX,AX MOV AX,BX MOV BX,CX CODE ENDS END START 方法二 : CODE SEGMENT ASSUME CS:CODE START: MOV AX,4000H MOV BX,8000H XCHG AX,BX CODE ENDS END START 方法三: CODE SEGMENT ASSUME CS:CODE START: MOV AX,4000H MOV BX,8000H PUSH AX PUSH BX POP AX POP BX CODE ENDS END START 实验四: DATA SEGMENT TABLE DW 10H,20H,30H,40H,50H ENTRY DW 4 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX LEA BX,TABLE ADD BX,ENTRY MOV AX,[BX] MOV AH,4CH INT 21H CODE ENDS END START 三、 测试数据与实验结果(可以抓图粘贴) 编译成功 连接成功,生成exe文件。 BX开始代表偏移量,即指向数组的第一个字节,在加上ENTRY,即加上4以后,[BX]即代表第五个字节,30H,所以AX中存放的是30H。 四、 本次上机的体会或收获 通过这次上机操作,让我熟悉了再DEBUG环境下的汇编语言操作,进一步了解了汇编语言的编译连接和执行等过程。 实验中遇到的问题: 开始在记事本中输入源程序时,保存时要加上后缀名.asm ,保存格式为所有文件,否则不能够进行编译,此外要注意所建立的文件和MASM、LINK软件都应该放在一个文件夹下。在输入程序时有些标点不能少,还有代表十六进制的H字符不能少;输出字符串时需要在字符串末尾加上$ 编译成功后在界面下输入MASM EX1 (EX1是文件名),几次回车后再输入LINK EX1,回车后即可生成可执行的EXE文件。 这只是第一次做实验,我也只是刚刚接触到汇编语言的实际操作,后面还有很多次机会,我要好好把握,努力提高自己的水平,为以后的学习打下基础。 实验二 实验题目 分支与DOS中断功能调用程序设计实验 完成日期 12周-周三 一、 实验目的与要求: 1. 掌握汇编语言的开发环境和上机过程 2. 熟悉运算类指令对标志位的状态影响以及标志位状态的表示方法 3. 熟悉逻辑类指令用法 4. 掌握传送类指令功能 5.掌握顺序程序设计的基本方法 二、 实验内容: 1.求内存单元中所定义的两个字节变量的连续内容之和。要求用三种不同的方法实现,下面已给出一种方法,请自编出另两种方法的程序(提示:(1)用定义字的形式实现,(2)用直接寻址方式实现) 2、计算表达式2*(X+Y-50)/Z的值的程序。 3.拆字程序。将1000H的内容拆开,高4位送4001H低位,低4位送4002H低位。 三、 实验步骤与源程序(若是硬件,需有硬件连线图;若是软件,需有流程图): 1. 源程序如下: 方法一: DATA SEGMENT A DB 5CH,85H ;两字节运算数 B DB 43H,0ABH DATA ENDS CODE SEGMENT ASSUME CS:CODE,ds:DATA START: MOV AX,DATA MOV DS,AX MOV SI,0 置位移量初值 MOV AL,A[SI] 取加数低位 ADD AL,B[SI] 两数相加 MOV A[SI],AL 存回A单元 INC SI 调整位移量 MOV AL,A[SI] ;取加数高位 ADC AL,B[SI] 带进位加 MOV A[SI],AL 存回A单元 MOV AH,4CH INT 21H CODE ENDS END START 方法二: DATA SEGMENT A DB 5CH,85H ;两字节运算数 B DB 43H,0ABH DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV AX,A ADD AX,B MOV A,AX MOV AH,4CH INT 21H 方法三: CODE ENDS END START code segment assume cs:code start:mov ax,855ch mov bx,0ab43h add al,bl adc ah,bh mov ah,4ch int 21h code ends end start 2. 源程序如下: data segment x dw 0033h y dw 0ab0ch z dw 0110h a dw ? b dw ? data ends code segment assume cs:code,ds:data start: mov ax,data mov ds,ax mov ax,x adc ax,y sbb ax,50 mov bx,2 imul bx idiv z mov a,ax mov b,dx mov ah,4ch int 21h code ends end start 3. 源程序如下: data segment org 1000h a dw 12ach org 4001h b db ? c db ? data ends code segment assume cs:code,ds:data start:mov ax,data mov ds,ax mov ax,a mov b,ah mov c,al mov ah,4ch int 21h code ends end start 四、 测试数据与实验结果(可以抓图粘贴) 实验1:方法一程序结果 方法二程序结果: 方法三程序结果: 实验2程序结果: 实验3程序结果: 实验三 实验题目 分支结构程序设计 完成日期 12周-周五 1. 实验内容: 1、请编写一程序,实现将大写字母字符串转换成小写字母字符串。设字符串的首地址为STRING,字符串的长度在LEN单元内。 3.从键盘输入一字符,判断该字符是小写字母、大写字母、数字或其它字符。若输入为小写字母,显示“You Input a Lowercase Letter!”;若输入为大写字母,显示“You Input a Uppercase Letter!”; 若输入为数字,显示“You Input a Digit!”; 若输入为其它字符,显示“You Input Other Letter!”。 二.实验步骤与源程序(若是硬件,需有硬件连线图;若是软件,需有流程图): 源程序1: DATA SEGMENT STRING DB I AM A STUDENT!$ LEN EQU $-STRING DATA ENDS CODE SEGMENT ASSUME DS:DATA,CS:CODE START:MOV AX,DATA MOV DS,AX MOV BX,OFFSET STRING MOV CX,LEN NEXT: MOV AL,[BX] CMP AL,A JB NEXT1 CMP AL,Z JA NEXT1 ADD AL,20H MOV [BX],AL NEXT1:INC BX LOOP NEXT MOV AH,9 MOV DX,OFFSET STRING INT 21H MOV AH,4CH INT 21H CODE ENDS END START 原程序三: 数字0~9的ASCII码为30H~39H;大写字母的ASCII码为41H~5AH,小写字母的ASCII码为61H~7AH。本题目将字符分为小写字母、大写字母、数字及其它字符,根据键入字符的ASCII码值判断其所属类型,并显示相应的信息。字符串显示使用功能号为09H的DOS功能调用,接收键盘输入的单个字符使用功能号为01H的DOS功能调用。 (1) 程序框架 DATA SEGMENT INFOR1 DB 0AH,0DH,"Please Press any key to input a letter:$" INFOR2 DB 0AH,0DH, "You Input a lowercase letter! $" INFOR3 DB 0AH,0DH,"You input a uppercase letter! $" INFOR4 DB 0AH,0DH,"You input a digit! $" INFOR5 DB 0ah,0dh, "You input other letter! $" DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV DX,OFFSET INFOR1 MOV AH,09H MOV AH,1 INT 21H CMP AL,0 JB OTHER CMP AL,9 JBE DIGIT CMP AL, A JB OTHER CMP AL , Z JBE UPPER CMP AL, a JB OTHER CMP AL, z JBE LOWER JMP PEND LOWER: MOV DX,OFFSET INFOR2 MOV AH,09H INT 21H JMP PEND UPPER: MOV DX,OFFSET INFOR3 MOV AH,09H INT 21H JMP PEND DIGIT : MOV DX,OFFSET INFOR4 MOV AH,09H INT 21H JMP PEND OTHER: MOV DX,OFFSET INFOR5 MOV AH,09H INT 21H JMP PEND PEND: MOV AH,4CH INT 21H CODE EndS END START 三.测试数据与实验结果(可以抓图粘贴) 程序结果1: 程序结果3: 实验四 实验题目 循环程序设计 完成日期 13周-周三 1. 实验目的与要求: 1. 掌握循环指令LOOP、LOOPZ、LOOPNZ的使用方法 2. 掌握实现单重、多重循环程序设计、编写、调试和运行的方法。 2. 实验内容: 1. 在数据段变量名为A的数据区内有10个字符,编写程序实现将这10个字符以相反顺序传送到附加段变量名为B的内存区中。 2、循环结构程序设计 编写一个程序,将内存1000H开始的连续100个字节送往1050H开始的连续100个内存单元中。要求使用三种不同的方法(不用串操作指令、用单一的串操作指令、用带重复前缀的串操作指令),下面已给出一种实现方法,请给出另外两种实现方法的源程序清单: 3. 数据段开始区域中,连续存放着10个无符号数,编程是先找出这10个数中最大的一个数,并将其存放到该数据区的后面。 五、 实验步骤与源程序(若是硬件,需有硬件连线图;若是软件,需有流程图): 源程序1: data segment a db 1234567890 n equ $-a b db n dup(?) data ends code segment assume cs:code,ds:data,es:data start: mov ax,data mov ds,ax mov es,ax lea si,a lea di,b add di,n mov cx,n move: mov al,[si] mov es:[di],al inc si dec di loop move mov ah,4ch int 21h code ends end start 源程序2: 方法一: 带重复前缀的串操作指令 DATA SEGMENT ORG 1000H DB 100 DUP(‘A’) ORG 1050H DB 100 DUP(‘B’) DATA ENDS CODE SEGMENT ASSUME DS:DATA,ES:DATA,CS:CODE START: MOV AX,DATA MOV DS,AX MOV ES,AX MOV SI,1000H MOV DI,1050H MOV CX,100 CLD REP MOVSB MOV AH,4CH INT 21H CODE ENDS END START 方法二: 不带重复前缀的串操作指令 DATA SEGMENT ORG 1000H DB 100 DUP(‘A’) ORG 1050H DB 100 DUP(‘B’) DATA ENDS CODE SEGMENT ASSUME DS:DATA,ES:DATA,CS:CODE START: MOV AX,DATA MOV DS,AX MOV ES,AX MOV SI,1000H MOV DI,1050H MOV CX,100 CLD NEXT: MOVSB LOOP NEXT MOV AH,4CH INT 21H CODE ENDS END START 方法三: 不用串操作指令,而用MOV指令 DATA SEGMENT ORG 1000H DB 100 DUP(‘A’) ORG 1050H DB 100 DUP(‘B’) DATA ENDS CODE SEGMENT ASSUME DS:DATA,ES:DATA,CS:CODE START: MOV AX,DATA MOV DS,AX MOV SI,1000H MOV DI,1050H MOV CX,100 NEXT: MOV AL,[SI] MOV [DI],AL INC SI INC DI LOOP NEXT MOV AH,4CH INT 21H CODE ENDS END START 源程序3: DATA SEGMENT xx DW 10, 0, 20, 15, 38, 236, 30, 45, 11, 49 MAX DW 0 DATA ENDS CODE SEGMENT ASSUME DS:DATA,CS:CODE START: MOV AX, DATA MOV DS, AX MOV BX, OFFSET xx MOV CX, 10 LOP: MOV AX, [BX] CMP AX, MAX JB L2 MOV MAX, AX L2: INC BX INC BX LOOP LOP MOV AH, 4CH INT 21H CODE ENDS END START 三.测试数据与实验结果(可以抓图粘贴) 程序结果1: 程序结果2: 方法一: 方法二: 方法三: 程序结果3: 实验五 实验题目DOS中断功能调用程序设计 完成日期 13周-周五 一.实验目的与要求: 1.掌握DOS的基本命令: 2.了解指令过程; 二:实验内容: 1. 编程实现由键盘输入任意一个字符,将该字符的ASCII码值显示在屏幕上。 源程序: 2、编写一程序,实现从键盘输入一个字符,判断其是不是数字,如果是则请输出这个数字,如果不是,请输出“这不是一个数字”的英文信息(要求:能连续输入)。 三.实验步骤与源程序(若是硬件,需有硬件连线图;若是软件,需有流程图): 源程序1: code segment assume cs:code start: mov ah,1 int 21h mov ah,4ch int 21h code ends end start 源程序2: DATA SEGMENT MS1 DB IT IS A DIGIT$ MS2 DB IT IS NOT A DIGIT$ DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX NEXT: MOV DX,OFFSET MS2 MOV AH,1 INT 21H; CMP AL,0DH JZ EXIT CMP AL, 0 JB NO CMP AL, 9 JA NO MOV DX,OFFSET MS1 NO: MOV AH,9 INT 21H JMP NEXT EXIT:MOV AH,4CH INT 21H CODE ENDS END START 四.测试数据与实验结果(可以抓图粘贴) 程序结果1: 程序结果2:
展开阅读全文
提示  淘文阁 - 分享文档赚钱的网站所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:微机基础学习知识原理实验报告.doc
链接地址:https://www.taowenge.com/p-2603891.html
关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

收起
展开