微机原理实验四 汇编语言程序设计与调试
《微机原理与接口技术》课程标准
炎黄技工学校《微机原理与接口技术》教学大纲理论课时36实践课时36总课时72考核形式考查编写时间2022-03编写人审核人机电信息工程系计算机技术教研室编《微机原理与接口技术》课程标准课程名称:微机原理与接口技术适用专业:计算机网络应用课程学分:4学分计划学时:72学时一、课程概述1、课程性质与任务本课《微机原理与接口技术》是计算机专业的一门重要的专业课,它的前续课程有《电子技术基础》、《电路原理》通过本课程的学习,为后续课程《微机控制技术》打下良好的基础。
同时与毕业设计密切相关,为它提供了硬件和软件的基础。
本课程介绍了微型计算机原理及组成结构、微机接口的有关基本知识和实用技术、常用微机接口芯片的使用方法。
2、课程基本理念结合我们学生的实际情况,在平时的教与学中主要遵循以下的理念:(1)将专业课的学习与基础理论衔接,指导学生有针对性地预习;(2)帮助学生形成强烈兴趣;(3)指导学生了解课程教学目的,教师结合教学大纲和自己对课程的把握情况,阐明《微机原理与接口技术》的课程特点;(4)培养学生良好的学习习惯。
3、课程设计思路1、总体设计原则与思路:按照“以能力为本位,以职业实践为主线,以项目课程为主体的模块化专业设计课程体系”的总体设计要求,该门课程以形成电机与变压器的原理与性能指标、运行调试及维护维修等能力为基本目标,彻底打破学科课程的设计思路,紧紧围铙工作任务完成的需求来选择和组织课程内容,突出工作任务与知识的联系,让学生在职业实践活动的基础上掌握知识,增强课程内容与职业岗位能力要求的相关性,提高学生的就业能力。
2课程设计依据与评价方法:学习项目选取的基本依据是该门课程涉及的工作领域和工作任务范围,但在具体设计过程中,以自动化专业学生的就业为向导,根据行业专家对自动化专业所涵盖的的岗位群体进行的任务和职业能力分析,同时遵循中等职业学校学生的认识规律,紧密集合职业资格证书中相关考核内容,确定本课程的工作任务模块和课程内容。
北京邮电大学微机原理软件实验报告
信息与通信工程学院微机原理软件实验报告班级:姓名:学号:班内序号:时间:微机原理软件实验·报告实验一DEBUG 的使用一、实验目的1.掌握汇编程序的编辑,编译,连接和执行的全过程;2.学习和掌握用DEBUG 调试程序的方法。
二、实验内容1. 用编辑软件,输入以下汇编语言源程序:DAT SEGMENTA DB 20 ;(自定)B DB 15 ;(自定)Y DB 3 DUP (0)Z DB 0, 0DAT ENDSSTA SEGMENT STACKDW 50 DUP (?)STA ENDSCOD SEGMENTASSUME CS: COD, DS: DATSTAR PROC FARPUSH DSXOR AX, AXPUSH AXMOV AX, DATMOV DS, AXMOV AX, STAMOV SS, AXMOV AL, AMOV Z, ALMOV Z+1, ALCALL SUB1MOV AL,B微机原理软件实验·报告MOV Z,ALMOV Z+1,ALCALL SUB1MOV AL,AMOV Z,ALMOV AL,BMOV Z+1,ALCALL SUB1ADD WORD PTR Y,AXADC BYTE PTR[Y+2],0RETSTAR ENDPSUB1 PROCMOV AL, ZMOV AH, Z+1MUL AHADD WORD PTR Y, AXADC BYTE PTR[Y+2], 0RETSUB1 ENDPCOD ENDSEND STAR2. 通过编译,连接形成可执行文件。
3. 用DEBUG 将可执行文件调入,并进行调试。
1) 用D 命令观察数据区在内存中的具体内容,记录单元A 和B 的具体地址。
2) 用U 命令对目标代码反汇编,观察反汇编后的结果。
注意发现源程序的起始位置,并记录这个起始地址。
3) 用T 命令作单步跟踪调试。
比较每条指令执行后的结果和原来的理解是否一致,得出程序运行的结果:它们是写在什么单元,具体内容是什么;并判断结果是否正确。
微机原理课后习题参考答案
微机原理课后习题参考答案第1部分微型计算机基础知识1.1 微处理器、微型计算机和微型计算机系统三者之间有什么不同?【解】微处理器:指计算机内部对数据进行处理并对处理过程进行控制的部件,伴随着大规模集成电路技术的迅速发展,芯片集成密度越来越高,CPU可以集成在一个半导体芯片上,这种具有中央处理器功能的大规模集成电路器件,被统称为“微处理器”。
微型计算机:简称“微型机”、“微机”,也称“微电脑”。
由大规模集成电路组成的、体积较小的电子计算机。
由微处理机(核心)、存储片、输入和输出片、系统总线等组成。
特点是体积小、灵活性大、价格便宜、使用方便。
微型计算机系统:简称“微机系统”。
由微型计算机、显示器、输入输出设备、电源及控制面板等组成的计算机系统。
配有操作系统、高级语言和多种工具性软件等。
1.2 CPU在内部结构上由哪几部分组成?CPU应该具备哪些主要功能?【解】CPU在内部结构上由运算器、控制器、寄存器阵列和内部总线等各部分构成,其主要功能是完成各种算数及逻辑运算,并实现对整个微型计算机控制,为此,其内部又必须具备传递和暂存数据的功能。
1.3 微型计算机采用总线结构有什么优点?【解】①简化了系统结构,便于系统设计制造;②大大减少了连线数目,便于布线,减小体积,提高系统的可靠性;③便于接口设计,所有与总线连接的设备均采用类似的接口;④便于系统的扩充、更新与灵活配置,易于实现系统的模块化;⑤便于设备的软件设计,所有接口的软件就是对不同的口地址进行操作;⑥便于故障诊断和维修,同时也降低了成本。
总线的逻辑电路有些是三态的,即输出电平有三种状态:逻辑“0”,逻辑“1”和“高阻”态。
1.4计算机总线有哪些,分别是什么?【解】总线按其信号线上传输的信息性质可分为三组:①数据总线,一般情况下是双向总线;②地址总线,单向总线,是微处理器或其他主设备发出的地址信号线;③ 控制总线,微处理器与存储器或接口等之间1.5 数据总线和地址总线在结构上有什么不同之处?如果一个系统的数据和地址合用一套总线或者合用部分总线,那么要靠什么来区分地址和数据?【解】数据总线(DB)为双向结构,数据在CPU与存储器或I/O 接口之间的传送是双向的,(数据既可以读也可以写),其宽度通常与微处理器的字长相同。
微机原理与接口技术汇编语言程序教案
微机原理与接口技术汇编语言程序教案第一章:汇编语言概述1.1 汇编语言的概念让学生了解汇编语言的定义、特点和作用。
让学生掌握汇编语言的基本组成元素,如指令、寄存器、操作数等。
1.2 汇编语言的表示方法让学生了解汇编语言的指令格式和操作数表示方法。
让学生掌握汇编语言的助记符及其含义。
1.3 汇编语言与机器代码的关系让学生了解汇编语言与机器代码的转换过程。
让学生掌握汇编语言指令与机器代码之间的对应关系。
第二章:汇编语言的语法规则2.1 指令语句的语法结构让学生了解指令语句的构成,包括操作码、寄存器、操作数等。
让学生掌握不同类型指令的语法规则,如数据传输指令、算术运算指令等。
2.2 伪指令和宏指令让学生了解伪指令和宏指令的概念及其作用。
让学生掌握伪指令和宏指令的语法规则和使用方法。
2.3 汇编语言的程序结构让学生了解汇编语言程序的组成部分,如数据段、代码段、堆栈段等。
让学生掌握汇编语言程序的格式和编写规范。
第三章:汇编语言的编程技巧3.1 寄存器的使用让学生了解寄存器的作用和分类,如AX、BX、CX、DX等。
让学生掌握寄存器在汇编语言编程中的应用技巧。
3.2 数据传输指令让学生了解数据传输指令的用法,如MOV、PUSH、POP等。
让学生掌握数据传输指令在汇编语言编程中的应用技巧。
3.3 算术运算指令让学生了解算术运算指令的用法,如ADD、SUB、MUL、DIV等。
让学生掌握算术运算指令在汇编语言编程中的应用技巧。
第四章:汇编语言程序设计实例4.1 实例一:计算两个数的和让学生了解程序设计的基本步骤,如编写算法、选择寄存器等。
让学生掌握汇编语言编程的基本技巧,如数据传输、算术运算等。
4.2 实例二:排序算法(冒泡排序)让学生了解排序算法的原理和实现方法。
让学生掌握汇编语言编程中循环结构和条件判断的使用技巧。
4.3 实例三:字符串操作让学生了解字符串的基本操作,如字符串长度计算、字符串复制等。
让学生掌握汇编语言编程中字符串操作的相关指令和技巧。
南邮微机原理实验报告资料
COUNT EQU $-STR2
EXTRA ENDS
CODE SEGMENT USE16
ASSUME CS:CODE,DS:DATA,ES:EXTRA
BEG: MOV AX,DATA
MOV DS,AX
MOV AX,EXTRA
MOV ES,AX
MOV CX,COUNT
源程序:
.586
DATA SEGMENT USE16
MESG DB 'What is your name?$'
MESG2 DB '?(Y/N)$'
BUF DB 30
DB ?
DB 30 DUP(?)
DATA ENDS
CODE SEGMENT USE16
ASSUME CS:CODE,DS:DATA
BEG: MOV AX,DATA
七、教师评阅
日期:
DATA ENDS
CODE SEGMENT USE16
ASSUME CS:CODE,DS:DATA
BEG: MOV AX,DATA
MOV DS,AX
MOV ES,AX
MOV CX,5
LL1: MOV MESG+5,0DH
MOV MESG+6,0AH
MOV MESG+7,'$'
CALL DISP
MOV MESG+5,0
MOV DI,OFFSET STRING
MOV CX,LENS
CLD
AGA: REPNE SCASB
JNZ NEXT
MOV FLAG,1
MOV SI,DI
DEC SI
微机原理的实验报告
一、实验目的1. 理解微机的基本组成和各部件的功能;2. 掌握微机的工作原理和指令系统;3. 熟悉汇编语言程序设计的基本方法;4. 提高动手能力和实际操作技能。
二、实验内容1. 微机系统组成实验(1)实验目的:了解微机的基本组成和各部件的功能。
(2)实验内容:观察并记录微机系统的各个部件,如CPU、内存、硬盘、主板等,并了解它们的功能。
(3)实验步骤:①观察微机系统各个部件的连接情况;②了解各个部件的功能和作用;③分析微机系统的整体结构。
2. 微机工作原理实验(1)实验目的:掌握微机的工作原理。
(2)实验内容:观察并记录微机工作过程中的各个阶段,如指令的取指、译码、执行等。
(3)实验步骤:①观察微机工作过程中的各个阶段;②了解各个阶段的功能和作用;③分析微机工作原理。
3. 指令系统实验(1)实验目的:熟悉汇编语言指令系统。
(2)实验内容:学习汇编语言的基本指令,如数据传送指令、算术运算指令、逻辑运算指令等。
(3)实验步骤:①学习汇编语言的基本指令;②编写简单的汇编语言程序,实现数据传送、算术运算、逻辑运算等功能;③调试程序,观察程序运行结果。
4. 汇编语言程序设计实验(1)实验目的:提高汇编语言程序设计能力。
(2)实验内容:编写一个汇编语言程序,实现以下功能:①计算两个数的和;②判断一个数是否为偶数;③输出程序运行结果。
(3)实验步骤:①编写汇编语言程序,实现上述功能;②调试程序,观察程序运行结果;③分析程序运行过程,确保程序正确性。
三、实验结果与分析1. 微机系统组成实验:通过观察和记录微机系统的各个部件,了解了微机的基本组成和各部件的功能。
2. 微机工作原理实验:通过观察微机工作过程中的各个阶段,掌握了微机的工作原理。
3. 指令系统实验:通过学习汇编语言的基本指令,熟悉了汇编语言指令系统。
4. 汇编语言程序设计实验:通过编写汇编语言程序,提高了汇编语言程序设计能力。
四、实验心得通过本次微机原理实验,我对微机的基本组成、工作原理和指令系统有了更深入的了解。
微机原理实验指导书
前言《微型计算机原理及应用》是一门实践性很强的专业技术基础课,因此,必须在课堂教学的基础上配以足够的实验或实践性教学环节,以便理论联系实际,使学生能深入理解课堂教学内容,加强学生动手能力,以加深对理论学习的理解和掌握,提高学生分析问题﹑解决问题的能力。
本实验指导书是《微型计算机原理及应用》一书的配套教材。
该实验指导书紧密结合教材内容,使用复旦大学科教仪器厂生产的FD-SJ8088A微机实验系统,合理安排了微机实验。
全书共分二部分。
第一部分汇编语言上机操作及程序调试方法及软件部分实验第二部分FD-SJ8088A微机实验系统介绍及硬件部分实验对于每一个实验都给出了实验目的﹑实验内容﹑预习要求﹑报告要求﹑实验提示﹑思考题。
实验提示部分我们仅给出部分文字提示和参考流程图,以作为学生自己编程时的参考。
我们主张学生在做实验前,必须要充分预习,充分准备,要依靠自己在实验前编出的程序,经过实验调试改正程序,得出正确的结果。
这样做实验,才能真正有收获,才能真正提高分析问题和解决问题的能力。
本实验指导书在编写的过程中,得到了本系的领导和老师的支持﹑指导和帮助,在此表示衷心的谢意。
由于编者水平有限,书中不妥或错误之处在所难免,欢迎大家在使用中提出宝贵意见。
编者2005年8月目录实验须知 (3)第一部分汇编语言上机操作及软件部分实验实验一汇编语言上机环境的熟悉和命令使用 (4)实验二利用D E B U G命令调试程序 (7)实验三利用中断指令进行输入输出程序设计 (9)实验四汇编语言综合编程实验 (11)第二部分硬件部分实验FD88调试软件 (12)实验五简单I/O接口控制实验 (21)实验六 8255 接口控制实验 (21)实验须知一、预习要求1.实验前认真阅读实验教程中有关内容,明确实验目的、内容和实验任务。
2.每次实验前做好充分的预习,对所需预备知识做到心中有数。
3.实验前应编好源程序,并对调试过程、实验结果进行预测。
微机原理与汇编语言实验循环程序设计实验
微机原理与汇编语言实验报告姓名x x x学号xxxxxx 专业班级计科x班课程名称微机原理与汇编语言实验日期2014.10.22实验名称循环程序设计实验成绩一、实验目的1、掌握循环程序的设计方法。
2、掌握比较指令、转移指令和循环指令的使用方法。
3、进一步掌握调试工具的使用方法。
二、实验内容1、实验原理(1)键盘输入的十进制数如368在计算机中是以33H,36H,38H形式存放的,如何将它们转换为一个二进制数101110000B,以便对累加循环的循环次数进行控制是本程序首先要解决的问题(2)累加结果为一个16位的二进制数,为了显示结果,必需把它们转换为十进制数2、实验步骤(1)流程图(2)实验源码.model small.stack ;定义堆栈段.data ;定义数据段inf1 db "Please input a number(1-627):$"inf2 db 0ah, 0dh, "1+2+......+$"ibuf db 7, 0, 6 dup(0)obuf db 6 dup(0).codestart: mov ax, @datamov ds, axmov dx, offset inf1;将屏幕输入的十进制数(存放于ibuf)转化为二进制数存储于ax 中mov ah, 09hint 21hmov dx, offset ibufmov ah, 0Ahint 21hmov cl, ibuf+1mov ch, 0mov si, offset ibuf+2mov ax, 0loop1: mov dx, 10mul dxand byte ptr [si], 0Fhadd al, [si] 从键盘输入一个十进制数,并将其转换为二进制数,存放在AX中开始结束素、、(CX)-1=0累加循环次数送CX(MOV CX,AX)AX清0(AX中存放累加和)BX送1(BX存放每次循环累加的数,每循环一次,BX值加1)ADD AX,BXINC BX累加和(在AX中)转换为十进制数并显示YNadc ah, 0inc siloop loop1mov cx, ax ;计算1+2+3+...+nmov ax, 0mov bx, 1loop2: add ax, bxinc bxloop loop2mov di, offset obuf+6 ;将ax中的二进制数转换为十进制数并以ascii的形式存于obufmov byte ptr [di], '$'mov bx, 10loop3: mov dx, 0div bxadd dl, 30hdec dimov [di], dlor ax, axjnz loop3dec dimov [di], '='mov dx, offset inf2 ;结果输出mov ah, 09hint 21hmov cl, ibuf+1 ;显示nmov ch, 0mov si, offset ibuf+2loop4: mov dl, [si]add dl, 30hinc simov ah, 02hint 21hloop loop4mov dx, dimov ah, 09hint 21hmov ax, 4c00hint 21hend start实验习题1源码:; multi-segment executable file template..model small ;定义程序的存储模式(small表示小型模式).stack ;定义堆栈段.data ;定义数据段inf1 db 0ah, 0dh, "1+2+......+$"obuf1 db 6 dup(0)obuf2 db 7 dup(0) ;除了六位数字外还要有一个=号.codestart: mov ax, @datamov ds, axmov dx, offset inf1 ;输出 1+2+......+mov ah, 09hint 21hmov ax, 0 ;计算1+2+3+...+nmov bx, 1loop1: add ax, bxinc bxcmp ax, 60000jbe loop1push ax ;将最终结果备份入栈push bx ;将n备份pop cxmov di, offset obuf1+5;将cx二进制数转换为十进制数并以ascii的形式存于obuf1mov byte ptr [di], '$'mov ax, cxmov bx, 10loop2: mov dx, 0div bxadd dl, 30hdec dimov [di], dlor ax, axjnz loop2mov dx, di ;输出nmov ah, 09hint 21hpop axmov di, offset obuf2+6;将ax中的二进制数转换为十进制数并以ascii的形式存于obuf2mov byte ptr [di], '$'mov bx, 10loop3: mov dx, 0div bxadd dl, 30hdec dimov [di], dlor ax, axjnz loop3dec dimov [di], '='mov dx, di ;=输出结果mov ah, 09hint 21hmov ax, 4c00hint 21hend start实验习题2源码:; multi-segment executable file template..model small ;定义程序的存储模式(small表示小型模式).stack ;定义堆栈段.data ;定义数据段inf1 db 'Please input six num:', 0ah, 0dh, '$'inf2 db 'sum:$'obuf0 db 0ah, 0dh, '$'ibuf db 5, 0, 4 dup(0)obuf db 6 dup(0).codestart: mov ax, @datamov ds, axmov dx, offset inf1 ;输出提示信息mov ah, 09hint 21hmov bx, 6 ;设置外层循环次数loop1: mov dx, offset ibufmov ah, 0Ahint 21hmov cl, ibuf+1 ;设置内层循环次数mov ch, 0mov si, offset ibuf+2mov ax, 0loop2: mov dx, 10 ;将屏幕输入的十进制数(存放于ibuf)转化为二进制数存储于ax中 mul dxand byte ptr[si], 0Fhadd al, [si]adc ah, 0inc siloop loop2push ax ;将结果入栈保存mov dx, offset obuf0 ;回车换行mov ah, 09hint 21hdec bxcmp bx, 0jnz loop1mov cx, 6mov ax, 0loop3: pop bxadd ax, bxloop loop3mov di, offset obuf+5;将ax中的二进制数转换为十进制数并以ascii的形式存于obuf mov byte ptr [di], '$'mov bx, 10loop4: mov dx, 0div bxadd dl, 30hdec dimov [di], dlor ax, axjnz loop4mov dx, offset inf2 ;输出提示信息mov ah, 09hint 21hmov dx, dimov ah, 09hint 21hmov ax, 4c00hint 21hend start实验习题3源码:; multi-segment executable file template..model small ;定义程序的存储模式(small表示小型模式) .stack ;定义堆栈段.data ;定义数据段inf db "Please input a num(0-65535):$"inf2 db 0ah, 0dh, "The num of 1:$"ibuf db 6, 0, 5 dup(0)obuf db 6 dup(0).codestart: mov ax, @datamov ds, axmov es, axmov ah, 09h ;输出提示信息Please input a num:mov dx, offset infint 21hmov ah, 0Ah ;接收一个无符号十进制整数(小于65536)mov dx, offset ibufint 21hmov ax, 0mov cl, ibuf+1;将屏幕输入的十进制数(存放于ibuf)转化为二进制数存储于ax中mov ch, 0mov si, offset ibuf+2loop1: mov dx, 10mul dxand byte ptr[si], 0Fhadd al, [si]adc ah, 0inc siloop loop1mov bx, 0loop2: shr ax, 1adc bx, 0cmp ax, 0jnz loop2mov ax, bxmov di, offset obuf+5;将ax中的二进制数转换为十进制数并以ascii的形式存于obufmov byte ptr [di], '$'mov bx, 10loop3: mov dx, 0div bxadd dl, 30hdec dimov [di], dlor ax, axjnz loop3mov ah, 09h ;输出提示信息The num of 1:mov dx, offset inf2int 21hmov ah, 09h ;将统计结果在屏幕上显示出来mov dx, diint 21hmov ax, 4c00hint 21hend start实验习题4源码:; multi-segment executable file template..model small ;定义程序的存储模式(small表示小型模式).stack ;定义堆栈段.data ;定义数据段N equ 5ibuf db 4, 0, 3 dup(0)inf1 db 'Please input N num(0-255):', 0ah, 0dh, '$'inf2 db 'Sort:', 0ah, 0dh, '$'buf db N dup(0)obuf2 db 4 dup(0)obuf db 0ah, 0dh, '$'.codestart: mov ax, @datamov ds, axmov dx, offset inf1 ;输出提示信息mov ah, 09hint 21hmov di, offset bufmov bx, N ;设置外层循环次数loop1: mov dx, offset ibufmov ah, 0Ahint 21hmov cl, ibuf+1 ;设置内层循环次数mov ch, 0mov si, offset ibuf+2mov ax, 0loop2: mov dx, 10 ;将屏幕输入的十进制数(存放于ibuf)转化为二进制数存储于ax中 mul dxand byte ptr[si], 0Fhadd al, [si]inc siloop loop2mov [di], alinc dimov dx, offset obuf ;回车换行mov ah, 09hint 21hdec bxcmp bx, 0jnz loop1mov bx, N-1 ;比较大小mov cx, bxmov dx, bxmov di, offset bufloop3: mov si, dimov al, [di]inc siloop4: cmp [si], aljbe loop5mov al, [si]mov ah, [di]mov [si], ahmov [di], alloop5: inc siloop loop4dec dxmov cx, dxinc didec bxcmp bx, 0jne loop3mov dx, offset inf2 ;输出提示信息mov ah, 09hint 21h;结果输出mov cx, Nmov si, offset bufloop6: mov di, offset obuf2+3;将buf中的二进制数转换为十进制数并以ascii的形式存于obuf2,并输出 mov byte ptr [di], '$'mov bx, 10mov al, [si]mov ah, 0loop7: mov dx, 0div bxadd dl, 30hdec dimov [di], dlor ax, axjnz loop7mov dx, dimov ah, 09hint 21hmov dx, offset obufmov ah, 09hint 21hinc siloop loop6mov ax, 4c00hint 21hend start3、实验结果(1)实验结果(2)实验习题1程序流程图:(3)实验习题2(4)实验习题3(5)实验习题4三、实验总结1)通过本次实验我掌握循环程序的设计方法,掌握比较指令、转移指令和循环指令的使用方法,进一步掌握了调试工具的使用方法。
[计算机硬件及网络]微机原理与接口技术汇编语言程序设计
ORG 200H
;目标程序的偏移量
DATA SEGMENT
;数据段开始
指令性语句和指示性语句的最大区别就是指示性 语句在标识符和伪指令助记符没有冒号
4.2 汇编语言程序结构
段定义伪指令SEGMENT、ENDS、ASSUME
伪指令SEGMENT和ENDS总是成对出现。SEGMENT用来定义 段开始,ENDS是来定义段结束。这一段伪指令可以将源程序 分为几个段,通常为数据段,堆栈段和代码段。
汇编语句语句格式
指令性语句的格式如下:
<标识符:> 指令助记符 目标操作数 <,源操作数> <;注释>
START: MOV AX,1090H
;将16进制数1090H送入AX
INC BX
指示性语句的格式如下:
<标识符> 伪指令助记符 <操作数1,操作数2…> <;注释>
CR DB ODH
;在字节单元CR处存放数据0DH
段,所以错误信息并不
←“no stack segment”
影响程序正常执行。
DEBUG和MASM的区别
DEBUG是调试器,它的主要用途在于除错,能够 观察每条汇编语句运行后的结果,方便的修正汇编 程序中的错误。DEBUG中必须使用16进制的数。
MASM是一种编译器,它能将汇编源程序进行编 译、链接形成可执行文件,但汇编程序必须使用规 范书写方式,源程序中除了指令性语句,还必须加 入许多与指令语句无关的指示性语句,以供编译器 识别。 MASM中的数据默认为10进制。
汇编源文件 .ASM
汇编 MASM.EXE
目执行程序 .EXE
汇编语言语句类型
指令性语句
微机原理实验报告
微机原理实验报告实验⼀DEBUG 调试实验类型:实验课时:指导教师:时间:2013 年⽉⽇课次:第节教学周次:第周实验分室:实验台号:实验员:⼀、实验⽬的1.练习使⽤DEBUG,调试简单汇编程序。
⼆、实验要求1.掌握DEBUG的使⽤,调试程序。
2.读懂程序中各条指令,说明程序功能。
三、实验内容1.启动DEBUG,⽤A命令输⼊并汇编下列程序段。
100 MOV SI,200103 MOV CX,10106 MOV AL,0108 MOV [SI ],AL10A INC SI10B INC AL10D DEC CX10E JNZ 108110 INT 3四、实验结果及分析实验⼆简单汇编语⾔设计实验类型:实验课时:指导教师:时间: 2012 年⽉⽇课次:第节教学周次:第周实验分室:实验台号:实验员:⼀、实验⽬的1.巩固DEBUG及宏汇编的使⽤。
2.加深对指令的理解。
⼆、实验要求1.设堆栈指针SP=2000H,(AX)=3000H,(BX)=5000H。
请编⼀程序将AX的内容和BX的内容进⾏交换。
请⽤堆栈作为两寄存器交换内容的中间存储单元,⽤DEBUG调试程序进⾏汇编与调试。
2.设DS=当前段指地址,(BX)=0300H,(SI)=0002H,请⽤DEBUG的命令将存储器偏移地址300H~304H连续单元顺序装⼊0AH、0BH、0CH、0DH、0EH。
在DEBUG状态下送⼊下⾯程序,并⽤单步执⾏的⽅法,分析每条指令源地址的形成过程?当数据传送完毕时,AX中的内容是什么?程序清单如下:MOV AX,BXMOV AX,0304HMOV AX,[0304H]MOV AX,[BX]MOV AX,0001[BX]MOV AX,[BX][SI]MOV AX,0001[BX][SI]HLT3.设(AX)=0002H,编⼀个程序段将AX的内容乘10,要求⽤移位的⽅法完成。
三、思想描述实验内容1将两个寄存器的内容进⾏交换时,必须有⼀个中间寄存器才能进⾏内容的交换,如果⽤堆栈做为中间存储单元,必须遵循先进后出的原则。
微机原理软件实验报告
实验名称:汇编语言程序设计实验日期:2023年3月10日实验地点:计算机实验室实验者:张三一、实验目的1. 熟悉汇编语言的基本语法和指令系统。
2. 掌握汇编语言程序设计的基本方法。
3. 通过实验,加深对微机原理的理解。
二、实验内容本次实验主要涉及以下内容:1. 数据传送指令的应用2. 算术运算指令的应用3. 控制转移指令的应用4. 子程序设计三、实验步骤1. 编写一个简单的程序,实现以下功能:(1)将数据0x1234存入寄存器AX;(2)将数据0x5678存入寄存器BX;(3)计算AX和BX的乘积,并将结果存入寄存器DX;(4)将乘积的高16位和低16位分别存入寄存器CX和AX。
2. 编写一个程序,实现以下功能:(1)将数据0x1A2B3C4D存入内存单元[0x1000];(2)从内存单元[0x1000]开始,读取连续4个字节的数据;3. 编写一个程序,实现以下功能:(1)定义一个子程序,实现两个整数的加法运算;(2)在主程序中调用该子程序,实现两个整数的加法运算。
四、实验结果与分析1. 数据传送指令的应用(1)将数据0x1234存入寄存器AX;MOV AX, 0x1234(2)将数据0x5678存入寄存器BX;MOV BX, 0x5678(3)计算AX和BX的乘积,并将结果存入寄存器DX;MUL BX(4)将乘积的高16位和低16位分别存入寄存器CX和AX; MOV CX, DXMOV AX, DX2. 算术运算指令的应用(1)将数据0x1A2B3C4D存入内存单元[0x1000];MOV [0x1000], 0x1A2B3C4D(2)从内存单元[0x1000]开始,读取连续4个字节的数据; MOV AX, [0x1000]MOV BX, [0x1000+2]MOV CX, [0x1000+4]MOV DX, [0x1000+6]MOV AH, 0x0EINT 0x103. 控制转移指令的应用(1)定义一个子程序,实现两个整数的加法运算;ADD procedure:ADD AX, BXRET(2)在主程序中调用该子程序,实现两个整数的加法运算;MOV AX, 0x1MOV BX, 0x2CALL ADDMOV CX, AX五、实验心得通过本次实验,我深刻理解了汇编语言的基本语法和指令系统,掌握了汇编语言程序设计的基本方法。
微机原理汇编语言的上机过程 实验报告
微机原理技术与接口实验报告学院:专业:班级:姓名:学号:汇编语言程序的上机过程实验目的通过简单地操作了解汇编语言程序的基本内容,体会汇编语言的运行,为以后的实验打下一定的基础。
实验原理及操作步骤一、上机环境❖要运行调试汇编语言程序,至少需要以下程序文件:▪编辑程序:或其他文本编辑工具软件,用于编辑源程序。
▪汇编程序:MASM.EXE,用于汇编源程序,得到目标程序。
▪连接程序:LINK.EXE,用于连接目标程序,得到可执行程序。
▪调试程序:DEBUG.EXE,用于调试可执行程序。
二、上机过程❖汇编语言程序上机操作包括:编辑、汇编、连接和调试几个阶段。
1.编辑源程序❖用文本编辑软件创建、编辑汇编源程序。
常用编辑工具有:、记事本、Word等。
❖无论采用何种编辑工具,生成的文件必须是纯文本文件,所有字符为半角,且文件扩展名为.asm(文件名不分大小写,由1~8个字符组成)。
2.汇编❖用汇编工具对上述源程序文件(.asm)进行汇编,产生目标文件(.obj)等文件。
❖汇编程序的主要功能是:检查源程序的语法,给出错误信息;产生目标程序文件;展开宏指令。
❖汇编过程如下:❖在DOS状态下,输入命令:MASM MYFILE.ASM(回车),即启动了汇编程序。
❖此命令执行后,会出现下面的3行信息,依次按回车键(即选择默认值)即可建立3个输出文件,其扩展名分别为:.OBJ(目标文件),.LST(列表文件)和.CRF(交叉引用文件)。
Object Filename [MYFILE.OBJ]:Source Listing [Nul.LST]:Cross Reference [Nul.CRF]:依次按回车键,进行选择后,汇编程序就对汇编源程序进行汇编。
如果汇编过程中发现有语法错误,则屏幕上会显示出错语言的位置和出错的类型。
此时,需要进行修改,然后再进行汇编。
❖如此进行,直至汇编无错误,得到目标文件为止。
3.连接❖汇编产生的目标文件(.obj)并不是可执行的程序,还要用连接程序把它转换为可执行的EXE文件。
汇编程序调试实验报告
微机原理与接口技术课程作业班级:目录一、实验目的: (2)二、实验环境 (2)三、实验过程 (2)(一)基础知识储备 (2)(二)汇编语言程序设计 (2)(三)汇编程序调试 (2)四、调试实例 (2)(一)实例一 (2)(二)实例二 (2)(三)实例三 (2)(四)实例四 (2)五、实验总结 (2)(一)实验收获 (2)(二)实验感悟 (2)一、实验目的:汇编语言是一种用助记符表示的程序设计语言。
用汇编语言编写的源程序生成的目标代码短,占内存少,执行速度快,适合于系统软件、实时控制软件、I/O 接口驱动等程序设计。
通过本次实验,熟练掌握汇编程序的调试,深入了解MASM汇编语言及其程序设计方法。
二、实验环境EDIT编辑器、MASM汇编程序、LINK连接程序、TD调试程序三、实验过程(一)基础知识储备1.了解微处理器80486的内部结构、寄存器组、工作模式等基本知识。
2.熟练掌握微处理器指令系统的相关知识,重点掌握80486的寻址方式和常用的指令格式及功能。
3.了解MASM汇编语言及其程序设计方法。
掌握MASM汇编语言的语句格式、语法规则、常用伪指令及DOS功能的调用等。
了解顺序结构、分支结构、循环结构和子程序的设计方法。
(二)汇编语言程序设计1.分析问题,明确要解决的问题和要求。
2.确定解决问题的思路和方法。
3.将解决问题的方案编制成程序流程图。
4.根据流程图,逐条编写程序。
5.上机调试,验证程序是否正确。
(三)汇编程序调试MASM汇编程序的主要功能是:把源文件转换成用二进制代码表示的目标文件,并生成列表文件;在转换过程中汇编程序将对源程序进行扫描,检查源程序是否有语法错误并指出源程序的语法错误。
汇编语言源程序的调试过程需要经过编辑、汇编、连接、运行、调试等几个步骤:1.编辑:使用编辑程序,将编写好的程序输入计算机,建立一个扩展名为ASM 的汇编语言源文件*.ASM。
2.汇编:使用汇编程序,将*.ASM文件经汇编后生成扩展名为*.OBJ。
汇编程序调试实验报告
.微机原理与接口技术课程作业班级:目录一、实验目的: (4)二、实验环境 (4)三、实验过程 (4)(一)基础知识储备 (4)(二)汇编语言程序设计 (4)(三)汇编程序调试 (5)四、调试实例 (5)(一)实例一 (5)(二)实例二 (7)(三)实例三 (10)(四)实例四 (12)五、实验总结 (14)(一)实验收获 (14)(二)实验感悟 (15)一、实验目的:汇编语言是一种用助记符表示的程序设计语言。
用汇编语言编写的源程序生成的目标代码短,占内存少,执行速度快,适合于系统软件、实时控制软件、I/O 接口驱动等程序设计。
通过本次实验,熟练掌握汇编程序的调试,深入了解MASM 汇编语言及其程序设计方法。
二、实验环境EDIT编辑器、MASM汇编程序、LINK连接程序、TD调试程序三、实验过程(一)基础知识储备1.了解微处理器80486的内部结构、寄存器组、工作模式等基本知识。
2.熟练掌握微处理器指令系统的相关知识,重点掌握80486的寻址方式和常用的指令格式及功能。
3.了解MASM汇编语言及其程序设计方法。
掌握MASM汇编语言的语句格式、语法规则、常用伪指令及DOS功能的调用等。
了解顺序结构、分支结构、循环结构和子程序的设计方法。
(二)汇编语言程序设计1.分析问题,明确要解决的问题和要求。
2.确定解决问题的思路和方法。
3.将解决问题的方案编制成程序流程图。
4.根据流程图,逐条编写程序。
5.上机调试,验证程序是否正确。
(三)汇编程序调试MASM汇编程序的主要功能是:把源文件转换成用二进制代码表示的目标文件,并生成列表文件;在转换过程中汇编程序将对源程序进行扫描,检查源程序是否有语法错误并指出源程序的语法错误。
汇编语言源程序的调试过程需要经过编辑、汇编、连接、运行、调试等几个步骤:1.编辑:使用编辑程序,将编写好的程序输入计算机,建立一个扩展名为ASM 的汇编语言源文件*.ASM。
2.汇编:使用汇编程序,将*.ASM文件经汇编后生成扩展名为*.OBJ。
微机原理及运用第4章
关系运算的操作数也必须为数字操作数。当关系成立时, 其结果为全 1;当关系不成立时,其结果为全 0。 汇编语言中的表达式不能构成单独语句, 只能是语句的 一个部分, 例如: MOVAX, BUF+2
ADDAL, VAL AND 0FH
JMPAGAIN+3 MOVBL, VB LE VA
4.1汇编语言基本概念
4.1.1汇编语言与机器语言
我们已经学过高级语言,例如BASIC语言或FORTRAN 语言,无论哪种语言,它都规定了一系列用于编写程序的语 句和应该遵循的语法规则。人们根据一种语言给定的语句及 其语法规则就可以写出程序,计算机则通过执行已编好的程 序来完成人们要求它完成的各种复杂功能。汇编语言也一样, 根据汇编语言的语句及其语法规则可以写出汇编语言程序。 但汇编语言与高级语言有较大的区别,汇编语言中的语句与 机器的种类和型号密切相关。
部分, 汇编时不形成任何目标码。注释必须以分号“;”开 头。 它可以作为语句的一个部分,也可以作为一个单独的语 句。
4.1.3汇编语言中的常数与表达式
1. 常数 常数可以分数值常数和字符串常数两类。数值常数按其 基数的不同,可以有二进制数、八进制数、十进制数、十六 进制数等几种不同的表示形式, 汇编语言中采用不同的后缀 加以区分。 B: 表示二进制数。 例如, 10110011B。
表示一条指令的这些字符常称为助记符。 我们必须指出, 采用助记符写出的程序,机器是不能直接执行的,因为上面 我们已经指出, 处理器在设计时是按二进制指令码考虑的。 所以,采用汇编语言编写的程序在执行前还必须将其“翻译” 成机器语言。通常将采用助记符指令写成的程序,称为源程 序,将它翻译成的机器语言程序称为目标程序。将汇编语言 的源程序翻译成目标程序的过程称为汇编过程或简称汇编。 汇编过程通常是由计算机完成的。它是通过执行一个专门完 成汇编的软件——称为汇编程序来实现的。既然写出的源程序 要由汇编程序将其翻译后才能执行,所以,我们编写的源程 序必须符合汇编程序的一系列要求或者规则,只有这样,你 的程序才能被正确地“翻译”。
计算机课程实验报告-《汇编语言与微机原理》[1]
常熟理工学院
计算机科学与工程学院实验报告 2013-2014学年第 2 学期
课程名称汇编语言与微机原理
专业计算机科学与技术
班级计科121
学号090312115
姓名王海波
实验地点N6-106
指导老师张雪伍
实验报告要求
1.在实验课前要认真预习实验内容,熟习实验的原理、方法及算法等。
2.根据实验指导书要求,认真完成实验内容;实验结束后,按照实验报告的要求认真填写相关内容。
3.实验时要带好实验指导书、实验报告本。
4.实验时要严肃认真,不得互相抄袭。
5.实验课的成绩由实验预习、实验过程、实验结果和实验报告四部分构成。
用Debug进行实验的示例实验报告必须包含内容说明:。
微机原理实验报告
微机原理实验报告实验名称:MIPS汇编程序设计院系:电信学院班级:姓名:指导老师:一、实验目的:1.熟悉MIPS汇编程序开发环境,学习使用Qtstim工具。
知道如何查看内存空间分配。
2. 了解C语言语句与汇编指令之间的关系。
3. 掌握MIPS汇编程序设计,掌握QTSPIM的调试技术。
4. 了解MIPS汇编语言与机器语言之间的对应关系。
5. 熟悉常见的MIPS汇编指令6. 掌握程序的内存映像。
二、实验内容1.用汇编程序实现以下伪代码:要求使用移位指令实现乘除法运算。
Int main (){Int K,Y;Int Z[50];Y=56;For(k=0;k<50;K++) Z[k]=Y-16*(k/4+210);}三、程序设计及分析1.C语言分析:有两个变量是int型,一个数组型;还有一个循环执行过程。
2.汇编程序实现分析:首先需要定义用户数据段,获得一个内存空间作为数组空间。
再选定几个存放器作为K,Y以及输出,其中输出输出和Y可以合用一个存放器。
3.设计思路:分配完空间地址后,最重要的是完成循环控制。
循环控制有两个思路:可以是先判断后循环;或者是先循环后判断 即如图slti $t2,$t0,50 #判断k 是否于50beq $t2,$t3〔$t2=1循环,否那么结束。
〕四、程序实现及调试分析1.汇编程序代码实现:方法一.data #定义用户数据段z:.space 200 #数组为int型,大小为50,所以占内存4*50 str:.asciiz " "#输出结果之间的空隙.textmain:la $s0,z #$s0 #为数组在z[]li $t0,0 #$s1 #代表k计数,初始值为0li $t1,56 #$t2 #代表Y,初值为56loop:slti $t2,$t0,50 #判断k是否于50beq $t2,$0,done #当k大于等于50,跳转结束srl $t3,$t0,2 #k/4addi $t3,$t3,210 #k/4+210sll $t3,$t3,4 #16*(k/4+210)sub $t3,$t1,$t3 #y-16*(k/4+210)sw $t3,0($s0) #写进z[k]li $v0,1 #输出addi $a0,$s0,0syscallli $v0,4 #输出间隔la $a0,strsyscalladdi $s0,$s0,4 #地址移一位addi $t0,$t0,1 #k加1j loop #循环done:li $v0,10syscall2.调试过程1.编写程序:详细见代码2.装载程序选择file,选择Reinitialize and Load File,把写好的文件导入QtSpim。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验四 1
一.实验目的:
1.伪指令、宏指令的使用
2.汇编语言程序设计与调试
3.CodeView编译调试工具软件的使用
二.实验内容
1.(重做,用宏定义表格,不用xlat指令,)定义一数据段data,从10H开始存放y 函数值表,table为首指针( Y=X2-2X+3 ;X=3,4,5,6,7,8,9,10)。
编一程序根据X值查table表,把对应Y值存入Y变量中。
mm macro
data segment
ORG 10
table db 6,11,18,27,38,51,66,83
x db 5
y db ?
data ends
ENDM
code segment
assume cs:code,ds:data
start: MM
mov ax,data
mov ds,ax
lea bx,table
mov ah,0
mov al,x
sub al,3
add bx,ax
mov al,[bx]
mov y,al
mov ah,4ch
int 21h
code ends
end start
2.字节变量BCDC中定义了10个字节的压缩BCD码(20十进制数),编一程序按顺序把它们转换成字符(ASC码),存入ASCC开始的字节数据区。
data segment
org 10H
BCDC db 61H,11H,18H,27H,38H,51H,66H,83H,44H,55H
ASCC db 20 DUP(?)
data ends
code segment
assume cs:code ,ds:data
start: mov AX,data
mov ds,AX
mov si,offset BCDC
MOV DI,OFFSET ASCC
MOV AX,0
mov cx,10
LOOP1:MOV AL,[si]
MOV AH,[si]
AND AL,0FH
MOV CL,4
SHR AH,CL
ADD AH,30H
mov [DI],AH
INC DI
ADD AL,30H
mov [DI],AL
INC si
INC DI
dec cx
jnz LOOP1
mov AH,4CH
INT 21H
code ends
end
start
3.字符串STR1(如‘Is a ADSL device.’),串长(字节数)存放在字变量LEN中,
编程把STR1串中小写字母都转换成大写字母而其它字符不变。
data segment
org 10H
STR1 DB 'Is a ADSL device.'
LEN DB 19
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: mov ax,data
MOV DS,AX
MOV CX,19
MOV SI,OFFSET STR1
MOV AX,0
LOOP1: MOV AX,[SI]
CMP AX,'a'
JB LOOP2
SUB AX,20H
LOOP2: MOV [SI],AX
INC SI
DEC CX
JNZ LOOP1
MOV AH,4CH
INT 21H
CODE ENDS
END START
三.实验步骤
1.选用合适的程序文本编辑软件编辑源程序,并为文件取以.ASM为扩展名的文件存盘。
2.用宏汇编软件MASM对源程序文件进行汇编,若有错误,根据提示(行号,错误类型)回源程序文件中修改。
3.用LINK对由MASM汇编后产生的目标文件做连接,生成可执行文件;若有错误(同上)回步骤1修改源程序文件。
4.用CV调试程序,检察运行结果,并调试程序。
5.用不同数据反复验正程序的正确性。
6.综合实验结果,得出结论或感受。