微机基础原理实验指导书.doc

举报
资源描述
-/ 《微机原理与应用实验指导书》 XX大学机电工程学院 刘XX 实验一 调试程序——DEBUG 实验目的 初步掌握汇编语言,可以调试简单的程序 实验内容 用汇编语言编写一个简单的加法运算程序。 编程提要 1.进入DEBUG状态,开机进入DOS状态。 C>DEBUG↙ 屏幕显示: - “-”为已进入DEBUG状态,在该提示符下可键入DEBUG命令。下划线部分为用户键入的字符或命令 2.键入程序并汇编 用DEBUG的A命令送入程序: -A 100↙ MOV AL,33 MOV DL,35 ADD DL,AL SUB DL,30 MOV AH,2 INT 21 3。执行程序 -G↙ 4.反汇编 可以用反汇编U命令将键入的程序调出,并且可以得到每条汇编指令的机器码。 -u起始地址 终止地址 5.退出DEBUG返回DOS状态 -Q 6.显示内存命令D -D 0100↙ -D 起始地址 终止地址↙ 7.修改存储单元命令E -E 地址↙ 8.检查和修改寄存器内容命令R 格式:a. R c. R[寄存器名] 功能:a.显示CPU内部所有寄存器的内容和全部标志位的状态。 b.显示和修改一个指定寄存器的内容和标志位的状态。 9.追踪与显示命令T 格式:a. T[=地址]或 T[地址] b. T=[地址][条数] 10.命名命令N 格式:N文件名 11.读盘命令L 12.写盘命令W 实验报告(写出上机结果及现象) 实验二 汇编与宏汇编程序 实验目的 通过实验了解汇编就是把用汇编语言编写的源程序翻译(汇编)成机器语言的目标程序。汇编程序可以使用小汇编程序(ASM)也可以用宏汇编程序(MASM),由于宏汇编程序不但可以代替ASM,而且可以汇编具有宏定义的汇编程序,因此我们在汇编程序时使用宏汇编程序(MASM)。 实验内容 执行宏汇编程序 编程提要 1.汇编过程 在DOS状态下,键入MASM则调入宏汇编程序,屏幕显示与操作如下: masm↙ Microsoft (R) Macro AssembLe Version 5.00 Copyright (C) Microsoft Corp 1981-1985,1987.All rights reserved. Source filename [.ASM]: ex2↙ Object filename [ex2.OBJ]: ex2↙ Source listing [NUL.LST]: ex2↙ Cross- reference [NUL.CRF]: ex2↙ 50678+410090 Bytes symbol space free 0 Warning Errors 0 Severe Errors 2.在DOS状态下,键入LINK(或LINK EX2)则系统调入LINK程序,屏幕显示操作如下: C>LINK↙ IBM Personal Computer Linker Version 2.00(C) Copyright IBM Corp 1981,1982,1983 Object Modules [.OBJ]: EX2↙ Run File [EX2.EXE]:EX2↙ List File[NUL.MAP]:EX2↙ Libraries[.LIB]: ↙ 3.执行程序 当用连接程序LINK将目标程序(.OBJ)连接定位后,可产生可执行文件(.EXE),可以在DOS状态下执行该程序。 C>EX2↙ How are you ! 也可以键入EX2.EXE↙ C>EX2.EXE↙ How are you ! 实验报告(写出上机结果及现象) 实验三 初级程序的编写与调试实验 实验目的 1.熟练掌握DEBUG的常用命令,学会用DEBUG调试程序 2.深入了解数据在存储器中的存储方法,及堆栈中数据的压入与弹出 3.掌握各种寻址方法及简单指令的执行过程 实验内容 1.设堆栈指针Sp=2000H,Ax=3000H,Bx=5000H请编一程序将Ax的内容和Bx的内容进行交换。请用堆栈作为两寄存器交换内容的中间存储单元,用Debug调试程序进行汇编与调试。 2.设DS=当前段指地址,BS=0300H,SI=0002H,请用DEBUG的命令将存储器依稀偏移地址300H~304H连续单元顺序装入OAH、OBH、OCH、OEH。在DEBUG状态下送入下面程序,并用单元步执行的方法,分析每条指令源地址的形成过程?当数据传送完毕时,Ax中的内容是什么? 程序清单如下: MOV Ax.Bx MOV Ax,0304H MOV Ax,[0304H] MOV Ax,[Bx] MOV Ax,0001[Bx] MOV Ax,[Bx][Si] MOV Ax,0001[Bx][Si] HLT 3.设Ax=0002H,编一个程序段将Ax的内容乘10,要求用移位的方法完成。 编程提要 实验内容1 将两个寄存器的内容进行交换时,必顺有一个中间寄存器才能进行内容的交换,如果用堆栈做为中间存储单元,必顺遵循先进后出的原则。 实验内容2 1 其中数据寄存器中的段地址为进入Debug状态后系统自动分配的段地址。 2 Si和Bx的初值 可在Debug状态下,用R命令装入,也可以在程序中用指令来完成。 3 用T命令程序执行执行,可进行单步跟踪执行,每执行一条指令就可以看到各寄存器的状态。也可用R命令直接调出寄存器,来栓验各寄存器内容是否确。 4 在执行程序前,可用E命令将偏移地址300H~304H送入OAH,OBH,OCH,ODH。 实验内容3 用移位的方法完成某些乘法运算,是较为常见的方法,操作数左作一位为操作数乘2运算。 实验报告(写出上机结果及现象) 实验四 计算学生平均成绩的实验 实验目的 熟悉汇编语言程序的使用,掌握十 进制数的运算和设计显示程序运行结果的格式。 实验内容 编写程序,计算20个分数的平均值,并以十进制表示将结果显示在屏幕上,显示格式的要求如下: 第一行显20个分数; 第二行显示AVERAGE SCORE=平均分数。 编程提要 (1)自己编写算法,将求得的平均分数的十进制值,转换成十进制表示。其算法是平均分数二进制的低4位>9则加6。对于高4位,将其值乘以16再与4位十进制调整的结果相加,即得到最终结果。乘法可以用多次加法实现。 (2) 显示字符串信息用DOS功能调用INT21H,功能号为09H。 (3) 显示平均数结果时,用DOS功能调用INT21H,功能号为02H。每位数必顺将其转换成相应的ASC码。 参考程序流程框图 CL=0? Y N AL+16H 显示20个分数的数据 求20个分数的数据 DAA CL-1 CL 求得平均分的二进制值 平均分数的低4位十进 制调整,结果送AL 显示平均分数结果 返回DOS 平均分数高4位=>CL 附:参考程序 ;******************************AVGSCORE.ASM****************************** DATA SEGMENT MES1 DB 92,85,74,81,70,68,65,78,54,43 DB 94,100,83,88,79,83,79,69,62,60 MES2 DW 92,85,74,81,70,68,65,78,54,43 DW 94,100,83,88,79,83,79,69,62,60 ;--------------------------------------------------------------------------- MES3 DB ‘AVERAGE SCORE=’,’$’ DATA ENDS ; --------------------------------------------------------------------------- CODE SEGMENT ASSUME CS:CODE,DS:DATA ;--------------------------------------------------------------------------- START: MOV AX,DATA MOV DS,AX MOV DX,OFFSET MES1 MOV AH,09H INT 21H ;显示提示信息 ;--------------------------------------------------------------------------- MOV BX,OFFSET MES2 MOV CL,20 MOV AX,0000 NEXT: ADD AX,WORD PTR[BX]   ;将各分数累加求和 ADD BX,02 LOOP NEXT MOV CL,20 DIV CL          ;求得平均分数和二进制值 MOV DL,AL ;--------------------------------------------------------------------------- AND AL,0F0H        ;平均分数的十进制调整 MOV CL,04 ROR AL,CL MOV CL,AL         ;平均分数高四位进进制值送入CL MOV AL,DL AND AL.0FH CMP AL,09 JBE HAD ADD AL,06 ; 平均分数的低4位十进调整 HAD: MOV BL,16H ; 平均分数高位十进制调整 NT: ADD AL,BL DAA MOV BH,AL         ;平均分数十进制值送入BH LOOP NT ;--------------------------------------------------------------------------- MOV DX,OFFSET MES3 MOV AH,09H INT 21H ; 屏幕显示平均分数提示符 MOV AL,BH AND AL,0F0H COM CH,04 ROR AL,CH ADD AL,30H MOV DL,AL MOV AH,02 INT 21H ; 显示平均分数高位 ;--------------------------------------------------------------------------- MOV AL,BH AND AL,OFH ADD AL,30H MOV DL,AL MOV AH,02 INT 21H ; 显示平均分数的低4位 ;--------------------------------------------------------------------------- MOV AX.4C00H INT 21H ; 返回DOS CODE ENDS END START 实验报告(写出上机结果及现象) 实验五 分类统计学生成绩实验 实验目的 熟悉数据分类的一种方法,并掌握屏幕上显示数据格式的方法。 实验内容 编写程序,将20个百分制的分数按<60,60~69,70~79,80~89,90~99和100共六档进行分类,统计出每档的个数及总数。 编程提要(1)分类后的结果需要转换成ASCⅡ码并在屏幕上显示。可以将ASCⅡ码的转换程序写成子程序,供调用。 (2)显示字符串和程序可以采用DOS功能调用INT21H,功能号为09H。 参考程序流程框图 FIVE 90~99的数据个数+1 80~89的数据个数+1 70~79的数据个数+1 设置显示信息字符串 <60的数据个数+1 分类数据个数送CL SIX 60~69的数据个数+1 分类数据的指针送Sl 取分类数据 FEVEN 数据<60 Y FIVE FIVE EIGHT N 数据<70 Y SIX NINE N TEN 数据<80 Y FEVEN 100的数据个数+1 N 数据<90 Y EIGHT EIGHT N 数据<100 Y NINE NINE N 数据=100 Y TEN N SI+1、CL -1分类总数+1 CL=0? N Y 显示字符串、显示分类结果 返回DOS 附:参考程序 ;******************************SORT.ASM******************************* DATA SEGMENT MES0 DB ‘92,85,74,81,70,68,65,78,54,43’,0AH,0DH DB ’94,100,83,88,79,83,79,69,62,60’,0AH,0DH,’$’ MES1 DB ‘SCORE[<60] :’,’$’ MES2 DB ‘SCORE[<60-69] :’,’$’ MES3 DB ‘SCORE[<70-79] :’,’$’ MES4 DB ‘SCORE[<80-89] :’,’$’ MES5 DB ‘SCORE[<90-99] :’,’$’ MES6 DB ‘SCORE[=100] :’,’$’ MES7 DB ‘TOTAL NUMBER :’,’$’ RESULT DB 92,85,74,81,70,68,65,78,54,43 DB 94,100,83,88,79,83,79,69,62,60 ;--------------------------------------------------------------------------- TOTAL DB 00 S5 DB 00 S6 DB 00 S7 DB 00 S8 DB 00 S9 DB 00 S10 DB 00 DATA ENDS ;--------------------------------------------------------------------------- CODE SEGMENT ASSUME CS:CODE,DS:DATA ;--------------------------------------------------------------------------- START: MOV AX,DATA MOV DS,AX MOV SI,OFFSET RESULT ;送分类数据的指针 MOV AX,0020 COMP: MOV AL,[SI]          ;取数据 CMP AL,60 JL FIVE           ;<60转FIVE入口处理 CMP AL,70 JL SIX           ;<70转SIX入口处理 CMP AL,80 JL ESVEN          ;<80转ESVEN入口处理 CMP AL,90 JL EIGHT          ;<90转EIGHT入口处理 CMP AL,100 JL NINE           ;<100转NINE入口处理 CMP AL,100 JE TEN           ;=100转TEN入口处理 JMP NEXT FIVE: MOV AL,[S5] ADD AL,01          ;S5存入<60的个数 DAA MOV [S5],AL JMP NEXT SIX: MOV AL,[S6] ADD AL,01          ;S6存入60-69的个数 DAA MOV [S6],AL JMP NEXT SEVEN: MOV AL,[S7] ADD AL,01          ;S7存入70-79的个数 DAA MOV [S7],AL JMP NEXT EIGHT: MOV AL,[S8] ADD AL,01          ;S8存入80-89的个数 DAA MOV [S8],AL JMP NEXT NINE: MOV AL,[S9] ADD AL,01          ;S9存入90-99的个数 DAA MOV [S9],AL JMP NEXT TEN: MOV AL,[S10] ADD AL,01          ;S10存入=100的个数 DAA MOV [S10],AL NEXT: MOV AL,[T0TAL] ADD AL,01 DAA MOV [TOTAL],AL        ;TOTAL保存分类数据的个数 INC SI LOOP COMP ;--------------------------------------------------------------------------- MOV DX,OFFSET MES0      ;显示分类的结果 MOV AH,09H INT 21 MOV DX,OFFSET MES1 MOV AH,O9H INT 21H MOV AL,[S5] CALL DISP MOV DX,OFFSET MES2 MOV AH,O9H INT 21H MOV AL,[S6] CALL DISP MOV DX,OFFSET MES3 MOV AH,O9H INT 21H MOV AL,[S7] CALL DISP MOV DX,OFFSET MES4 MOV AH,O9H INT 21H MOV AL,[S8] CALL DISP MOV DX,OFFSET MES5 MOV AH,O9H INT 21H MOV AL,[S9] CALL DISP MOV DX,OFFSET MES6 MOV AH,O9H INT 21H MOV AL,[S10] CALL DISP MOV DX,OFFSET MES7 MOV AH,O9H INT 21H MOV AL,[TOTAL] CALL DISP MOV AX,4C00H INT 21H ;--------------------------------------------------------------------------- DISP PROC NEAR          ;显示分类的结果子程序。 PUSH CX ; 用于将数据转换成ASCII码, MOV BL,AL ; 并在屏幕上显示 AND AL,0F0H MOV CL,04 ROR AL,CL ADD AL,30H MOV DL,AL MOV AH,02H INT 21H MOV AL,BL AND AL,OFH ADD AL,30H AMV DL,AL MOV AH,02H INT 21H MOV DL,0DH MOV AH,O2 INT 21H MOV DL,0AH MOV AH,02 INT 21H POP CX RET DISP ENDP CODE ENDS END START 实验报告(写出上机结果及现象) 实验六 求从TABLE开始的20个无符号字节的和,结果放到SUM字单元之中 实验目的 熟练使用汇编语言。 实验内容 从TABLE开始的10个无符号字节的和,结果放到SUM字单元之中。 编程提要 源程序学生自己编写。 参考程序: DATA SEGMENT TABLE DB 12H,23H,34H,45H,56H DB 67H,78H,89H,9AH,0FDH SUM DW? DATA ENDS ; STACK SEGMENT DB 50 DUP(?) STACK ENDS ; CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV ES,AX MOV AX,STACK MOV SS,AX LEA SI,TABLE MOV CX,10 XOR AX,AX NEXT: ADD AL,[SI] ADC AH,0 INC SI LOOP NEXT MOV SUM,AX HLT CODE ENDS END START 实验报告(写出上机结果及现象) 实验七 对于三个8位无符号数80H,39H和28H,编写 S=80H*39H-28H的程序 实验目的 用汇编语言编写简单的程序。 实验内容 对于三个8位无符号数80H,39H和28H,编写 S=80H*39H-28H的程序。 编程提要 源程序学生自己编写。 参考程序: DATA SEGMENT NUM DB 80H,39H,28H RESULT DW? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX LEA SI,NUM LEA DI,RESULT MOV AL,[SI] MOV BL,[SI+1] MUL BL MOV BH,[SI+2] MOV BH,0 SUB AX,BX MOV [DI],AX MOV AH,4CH INT 21H CODE ENDS END START 实验报告(写出上机结果及现象) 实验八 内存自TABLE开始的连续10个单元中有放在0-9的平方值, 查表求DATA中任意数X(0<=X<=9)的平方值,并将结果放到RESULT中 实验目的 能够熟练使用汇编语言,对内存数据求值。 实验内容 内存自TABLE开始的连续10个单元中有放在0-9的平方值,查表求DATA中任意数X(0<=X<=9)的平方值,并将结果放到RESULT中。 编程提要 源程序学生自己编写。 参考程序: DSEG SEGMENT TABLE DB 0,1,4,,9,16,25,36,49,,64,81 DATA DB ? RESULT DB? DSEG ENDS SSEG SEGMENT STACK ‘STACK’ DB 100 DUP (?) SSEG ENDS CSEG SEGMENT ASSUME CS:CSEG,DS:DSEG,SS:SSEG BEGIN: MOV AX,DSEG MOV DS,AX MOV AX,SSEG MOV SS,AX LEA BX,TABLE MOV AH,0 MOV AL,DATA ADD BX,AX MOV AL,[BX] MOV RESULT,AL MOV AH,4CH INT 21H CSEG ENDS END BEGIN 实验报告(写出上机结果及现象) 实验九 编写程序,数据以字节变量BUFFER为首地址的50个单元清零 实验目的 能够熟练使用汇编语言进行编程。 实验内容 编写程序,数据以字节变量BUFFER为首地址的50个单元清零。 编程提要 源程序学生自己编写。 参考程序: DATA SEGMENT BUFFER DB 50 DUP(?) COUNT DB 50 DATA ENDS STACK SEGMENT DW 32 DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX MOV CL,COUNT LEA BX,BUFFER AGAIN: MOV [BX],0 INC BX CMP BX,COUNT JB AGAIN MOV AH,4CH INT 21H CODE ENDS END START0 实验报告(写出上机结果及现象) 实验十 编程:把用ASCII码形式表示的数转换为二进制码。 ASCII码存放在以TABLE为首的地址的内存单元中转换结果放在SUM单元中 实验目的 使用汇编编程进行内码转换。 实验内容 把用ASCII码存放在以TABLE为首的地址的内有单元中转换结果放在SUM。 编程提要 源程序学生自己编写。 参考程序: DATA SEGMENT TABLE DB ‘2’,’6’,’A’,’1’ SUM DB 2 DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA BEGIN: MOV AX,DATA MOV DS,AX MOV CL,4 MOV CH,CL LEA SI,TABLE CLD XOR AX,AX XOR DX,DX NEXT1: LODS TABLE AND AL,7FH CMP AL,‘0’ JL ERROR CMP AL,‘9’ JG NEXT2 SUB AL,30H JMP SHORT NEXT3 NEXT2: CMP AL,‘A‘ JL ERROR CMP AL,‘F‘ JG ERROR SUB AL,37H NEXT3: OR DL,AL ROR DX,CL DEC CH JNZ NEXT1 MOV WORD PTR SUM,DX MOV AH,4CH INT 21H CODE ENDS END BEGIN 实验报告(写出上机结果及现象) 实验十一 编程:把存放在BUFF中的16位二进制数转换为ASCII码表示的等值数字字符
展开阅读全文
相关搜索
温馨提示:
taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。

当前位置:首页 > 教育专区 > 教案示例


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

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