实验基础汇编语言程序设计

合集下载

计算机硬件基础实验-汇编语程序设计

计算机硬件基础实验-汇编语程序设计

实验二:汇编语程序设计一、实验目的旨在通过实验使同学了解汇编语言的程序结构和编程方法,可以编写出顺序程序、分支程序和一般的循环程序,并学会修改和调试方法。

二、实验环境MASM、LINK、DEBUG或包含此软件的相关软件三、实验内容1.1、从FIRST开始的100个单元中存放着一个字符串,结束符为$。

编写一个程序,统计该字符串中字母‘A’的个数。

程序:data segmentxx equ 100str1 db 'xsaabb', 94 dup(20h)data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axmov bl,0mov cx,100 ;设置循环次数mov si,-1 ;si指向字符串前一单元mov al,61h ;"a"字符的ASCII码值送ALagain: inc sicmp al,str1[si] ;查找"a"jnz next ;找到(ZF=1)转nextinc blnext:loop againmov ah,4chint 21hcode endsend start调试过程:2.编程判断输入的ASCII码字符时数字还是字母,并将判断结果分别以“D”和“L”显示出来。

程序:data segmentdata endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axinput:mov ah,01hint 21hcmp111:cmp al,'0' ;0jnl cmp1jmp inputcmp1: cmp al,'9' ;9jle output2cmp al,'A' ;Ajnl cmp2jmp inputcmp2: cmp al,'Z' ;Zjle output1cmp al,'a' ;ajle inputcmp al,'z' ;zjle output1jmp inputoutput1:mov dl,'L' mov ah,02hint 21hjmp quit output2:mov dl,'D'mov ah,02hint 21hjmp quit quit:mov ah,4chint 21hcode endsend start调试过程如下:3.三个数据区YW、SHX和YY分别存放着30个学生的三门功课成绩(百分制),用子程序计算每个学生的三门功课的平均分,将平均分放在第四个数据区PJ中程序:data segmentPJ DB 30 DUP(?);平均YW DB 11,22,33,44,55,25 DUP(?);语文SHX DB 33,44,11,22,10,25 DUP (?);数学YY DB 23,34,24,35,21,25 DUP(?);英语data endscode segmentassume cs:code,DS:datamain proc farstart:mov ax,0push dspush axmov ax,datamov ds,axmov cx,30;30个学生成绩mov si,0again:call padd ;调用计算平均成绩子程序inc si ;地址加1loop againretmain endppadd procpush cxpush ax ;保护现场mov al,yw[si]and ax,0ffh ;ah清0add al,shx[si]adc ah,0 ;注意是ADCadd al,yy[si]adc ah,0 ;注意是ADCmov dl,3div dlmov pj[si],al ;平均值写到数据段pop ax ;现场返回pop cxretpadd endpCODE ENDSEND START四、实验总结写出你本次实验的收获和体会。

实验一 汇编语言编程基础

实验一 汇编语言编程基础

实验一汇编语言编程基础一、实验目的:1.熟悉和掌握DEBUG调试常用汇编指令的方法;2.了解和掌握MOV指令在不同的寻址方式下的使用方法。

3.了解和掌握加、减指令在程序设计中的用法4.了解和掌握逻辑指令、移位指令的功能和作用,以及此类指令的使用方法。

5.掌握简单的汇编程序编辑、编译和调试的过程二、实验内容1 数据传送指令调试、寻址方式验证实验要求:(1)利用DEBUG系统的A和T两指令编程将十六进制数3F56H分别送给AX、BX、CX、DX四个寄存器。

(Ⅰ)采用立即数寻址方式将该数分别送给AX、BX二个寄存器。

记录:操作前 AX= 0000 、 BX= 0000 、 CX= 0000 、 DX=0000操作后 AX=3F56 、 BX=3F56 、 CX=0000 、 DX=0000操作过程中所用到的指令:MOV AX,3F56MOV BX,3F56(Ⅱ)采用立即数寻址方式将该数分别送给AX寄存器,再采用寄存器寻址方式将该数送给CX、 DX 三个寄存器。

记录:操作前 AX=3F56 、 BX= 0000 、 CX=0000 、 DX=0000操作后 AX=3F56 、 BX= 3F56 、 CX=3F56 、 DX=3F56操作过程中所用到的指令:MOV BX,AXMOV CX,AXMOV DX,AX(Ⅲ)目的操作数采用直接寻址方式,将该数送给2000H单元。

记录:操作前(2000H)=00操作后(2000H)=56(2)利用DEBUG系统的A和T两指令编程对AX、BX、CX、DX四个寄存器进行出入堆栈的操作。

(Ⅰ)将AX、BX、CX、DX四个寄存器的内容依次压入堆栈中,注意观察栈指针寄存器和堆栈内容的变化。

记录:压入AX前 SP= FFEEH ,(SP)=00压入AX后 SP= FFECH ,(SP)=1234H压入BX前 SP= FFECH ,(SP)=1234H压入BX后 SP= FFEAH ,(SP)=5678H压入CX前 SP= FFEAH ,(SP)=5678H压入CX后 SP= FFE8H ,(SP)=3F56H压入DX前 SP= FFE8H ,(SP)=3F56H压入DX后 SP= FFE6H ,(SP)=4690操作过程中所用到的指令:mov ax,1234 mov bx,5678 mov cx,3f56 mov dx,4690push ax push bx push cx push dx(Ⅱ)将堆栈中的内容依次弹出到AX、BX、CX、DX四个寄存器,注意观察栈指针寄存器和堆栈内容的变化。

汇编语言程序设计实验小结

汇编语言程序设计实验小结

汇编语言程序设计实验小结本次汇编语言程序设计实验旨在通过实践,加深对汇编语言编程的理解和掌握,并通过编写和调试汇编程序,提升实际应用能力。

在本次实验中,我学到了许多关于汇编语言程序设计的知识和技巧,也遇到了一些挑战和问题。

以下是我对这次实验的小结。

在实验开始之前,我进行了充分的学习和准备。

通过阅读教材和参考资料,我了解了汇编语言的基本概念、指令集和编程规范。

同时,我还学习了调试工具的使用方法,以便在编写程序时能够进行实时调试,提高效率和准确性。

在实验过程中,我遇到了一些困难和挑战。

其中之一是理解和运用汇编语言的指令集。

由于汇编语言是一种低级语言,指令的数量和种类相对较多,需要深入了解每个指令的功能和使用方法。

为了解决这个问题,我通过查阅资料和请教老师,逐步掌握了常用指令的用法,并能够根据实际需求选择合适的指令进行编程。

另一个困难是调试程序时出现的错误。

由于汇编语言是一种底层语言,对程序员的要求较高,一旦出现错误,往往需要仔细检查每一步的操作和数据处理过程。

在实验中,我遇到了一些错误,例如指令书写错误、寄存器使用错误等。

为了解决这些问题,我采取了逐步调试的方法,通过观察变量的值、输出结果的正确性等来定位错误的位置,并逐步修改代码,最终成功解决了问题。

在实验过程中,我也发现了汇编语言编程的一些优点和特点。

首先,汇编语言可以直接访问底层硬件资源,使得程序的执行效率较高。

其次,汇编语言的灵活性较高,可以实现一些高级语言难以实现的功能。

例如,通过汇编语言编写的程序可以直接操作内存,实现对特定位置的数据读取和存储。

再次,汇编语言的指令集相对简单,易于学习和理解。

因此,掌握汇编语言编程对于深入理解计算机体系结构和底层工作原理非常有帮助。

通过本次实验,我不仅学到了汇编语言程序设计的知识和技巧,还培养了分析和解决问题的能力。

在以后的学习和工作中,我将继续学习和掌握汇编语言编程,将其应用于实际项目中,提高程序的性能和效率。

实验五汇编语言程序设计实验

实验五汇编语言程序设计实验

实验五汇编语言程序设计实验(一)一、实验目的1、了解和把握汇编语言子程序和主程序的设计。

2、把握循环程序的设计。

3、把握汇编语言主程序与子程序的挪用和参数传递。

4、进一步熟悉在PC机上成立,汇编,链接,调试和运行808六、8088汇编语言程序的进程。

二、实验内容1、温习汇编语言源程序的上机进程:二、编写一个完整程序(包括循环设计和子程序设计)在以strg为首地址的缓冲区中寄存着1个字符串,以-1作为终止标志,编程统计字符串长度,并将结果存入lenth单元。

要求统计字符串用子程序完成。

data segmentstrg db ‘abcd’,-1lenth dw ?data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axlea dx,strgcall scountmov lenth,bxmov ah,4chint 21hscount proc nearpush sixor bx,bxmov si,dxnext:cmp byte ptr[si],-1jz overinc bxinc sijmp nextover:pop siretscount endpcode endsend start三、实验器材IBM PC 微机一台四、实验要求1、正确明白得本次实验的目的,内容和原理。

2、能编写相应的程序五、实验报告要求完成下面任务:从键盘输入1个长度小于100的字符串,存入以buff 为首地址的缓冲区,其中如有大写字母,要求用子程序转换成小写字母,字符串以回车键作为终止。

写出操作步骤,程序清单,程序注释,实验现象。

汇编语言程序设计

汇编语言程序设计

《汇编语言程序设计》课程教学大纲学时:32 学分:2理论学时:24 实验学时:8面向专业:电科、电信、通信课程代码:B2700009先开课程:C语言程序设计课程性质:必修执笔人:王艳春审定人:陈龙猛、张金政第一部分:理论教学部分一、说明1、课程的性质、地位和任务本课程属于专业基础课,是电科、电信和通信专业学生必修的核心课程之一,是进一步学习微机原理、操作系统等课程的基础。

掌握它有助于提高学生对计算机系统的设计、研究、开发和应用能力。

汇编语言是一种面向机器、实践性很强的程序设计语言,必须结合一种实际的计算机来组织教学。

因此,本课程选择最广泛使用的IBM PC作为具体的机型来介绍。

通过课堂教学和上机实践,培养学生用汇编语言进行编程的思路、方法,养成良好的程序设计习惯,并了解底层I/O 驱动软件的编程方法,熟悉源程序汇编、链接和调试运行的步骤和方法,掌握dos、BIOS功能的调用方法及使用debug工具的调试手段,为后续课的学习打下扎实的基础。

2、课程教学和教改基本要求课程的目的与教学基本要求:本课程主要介绍汇编语言和宏汇编的基本概念,80X86CPU的指令系统和寻址方式;介绍汇编语言程序格式、伪操作和上机全过程。

通过实际例子,详细叙述顺序、分支、循环、子程序等基本程序结构以及程序设计的基本方法和技巧。

学习这门课程,应达到以下几个要求:①掌握汇编语言的基本理论知识和有关概念;掌握用汇编语言编写源程序的基本原则、方法和技巧;②具有阅读,分析汇编语言程序的能力;③通过上机实践,能够熟练地掌握汇编语言程序的编辑、汇编、连接、运行过程及debug工具的调试手段。

课堂授课采用多媒体教学,采用由浅入深、循序渐进学习步骤,主要讲解设计思想、实现技巧,通过提问题引导学生思考,提高学生的学习兴趣,从而加深学生对理论课的理解,提高学生的动手能力。

二、教学内容与课时分配第一章基础知识(2学时)1.1 机器语言及汇编语言的产生1.2 汇编语言的组成1.3 存储器1.4 指令和数据1.5 存储单元及CPU对存储器的读写1.6 三大总线1.7 主板、接口卡及各类存储器芯片1.8 内存地址空间教学的重点与难点:指令和数据在内存或磁盘上没有区别;内存地址空间。

1、汇编语言程序设计

1、汇编语言程序设计

实验一:汇编语言程序设计一、实验目的:1.掌握汇编语言程序设计方法;2.学习使用Keil C51 Visiom2软件编译调试程序;3.为后面的单片机硬件实验做基础;二、实验内容:1.一个简单的定义数据空间的小程序;2.拆字程序实验3.拼字程序实验三、实验器材:计算机一台四、实验步骤:1.建立一个项目文件:在KEIL 51界面“项目”/“新项目”建立一个新的项目(创建一个文件夹,放在里面);2.为工程选择一个目标器件(即选择设备:A TMEL89C52)3.创建源程序文件并输入程序代码并保存;(“文件”/“新建”,输入程序后保存在创建的文件夹里)4.把源文件添加到项目中;5.为工程项目设置软硬件调试环境;6.编译项目文件7.软件或硬件调试8.设置观察寄存器和存储器窗口,学习程序执行过程中各存储单元相应的变化;程序1:org 0000Hajmp mainorg 0100hdb "A","B","1234","中国人民解放军"main:nopsjmp $end程序2:把指定字节的高低位拆开分别存放,多用于显示子程序ORG 0000HMOV DPTR,#8000HMOVX A,@DPTRMOV B,ASWAP AANL A,#0FHINC DPTRMOVX @DPTR,AINC DPTRMOV A,BANL A,#0FHMOVX @DPTR,ALOOP: SJMP LOOPEND程序3:;把两字节的低位合拼成一个字节,多用于显示子程序ORG 0000hMOV DPTR,#8000HMOVX A,@DPTRANL A,#0FHSWAP AMOV B,AINC DPTRMOVX A,@DPTRANL A,#0FHORL A,BINC DPTRMOVX @DPTR,ALOOP: SJMP LOOPEND程序4:“验证式”清零程序ORG 0000HMOV R0,#00HMOV DPTR,#2000H ;空间首地址送DPTRLOOP: mov a,#00hMOVX @DPTR,A ;清零INC DPTR ;DPTR加1INC R0 ;字节数加1CJNE R0,#00H,LOOP ;连续清256个字节LOOP1:SJMP LOOP1END。

汇编语言程序 实验指导书

汇编语言程序 实验指导书

《汇编语言程序设计》实验指导书计算机系统结构团队编西南科技大学计算机科学与技术学院2011年3月实验指导书说明汇编语言程序设计是一门实践性很强的课程,只有通过上机实践才有可能掌握设计技术并使其达到较高的水平,因此编写了实验指导书,为汇编语言程序设计课程的实验教学服务。

实验指导书共分三部分,第一部分是实验的预备知识,介绍了汇编语言程序运行时所需要的一些应用程序;第二部分是对实验报告的要求。

第三部分是实验题目,分为验证型实验和设计型实验。

在具体的实验过程中可以根据学生情况进行选择。

目录:第一部分汇编语言程序设计实验基础知识概述 (4)1.1、汇编程序MASM.EXE (4)1.1.1 宏汇编程序的功能 (4)1.1.2 汇编程序的用法 (4)1.1.3 MASM出错信息 (5)1.1.4 连接程序LINK.EXE (6)1.2 DEBUG命令详解 (7)1.2.1 DEBUG的功能 (7)1.2.2 DEBUG的使用方法 (7)1.2.3 DEBUG命令功能说明 (8)第二部分实验要求 (36)2.1 实验要求 (36)2.2 实验报告要求 (36)2.3 加强实践能力的培养 (36)第三部分实验内容 (37)实验1 MASM、LINK指令的使用实验 (37)实验2 汇编命令(伪指令)实验...................................................... 错误!未定义书签。

实验3 顺序结构程序实验................................................................ 错误!未定义书签。

实验4 简单分支结构程序实验 (39)实验5 循环结构程序实验 (41)实验6 子程序实验 (43)实验7 DOS功能调用 (46)实验8 排序和检索程序实验 (47)实验9 字符串操作实验 (51)第四部分参考资料 (57)第一部分汇编语言程序设计实验基础知识概述1.1、汇编程序MASM.EXE经过编辑的程序所建立的汇编语言源程序,是不能直接在计算机上运行的。

汇编语言程序设计实验篇(emu8086)

汇编语言程序设计实验篇(emu8086)

1.汇编语言程序设计实验篇1.1.汇编系统软件简介Emu8086-Microprocessor Emulator是集源代码编辑器、汇编/反汇编工具以及debug 的模拟器。

它能模拟一台"虚拟"的电脑运行程序,拥有独立的“硬件”,避免访问真实硬件。

该软件兼容Intel的下一代处理器,包括PentiumII、Pentium4。

利用该软件提供的调试工具,能够单步跟踪程序,观察程序执行过程中寄存器、标志位、堆栈和内存单元的内容。

1.1.1创建程序 TEMPLATE程序本章与指令相关的实验都是用COM TEMPLATE类型的程序完成的。

打开emu8086,在“welcome…”对话框中,单击按钮,创建文件。

在“choose code template”对话框中,选择“COM template-simple and tiny executable file format, pure machine code.”后,单击按钮。

在如所示的编辑界面中,在“;add your code here”部分输入相应的指令,第一条指令默认的偏移地址为100h。

输入全部指令后,单击按钮,保存相应的程序段。

2.EXE TEMPLATE程序本章与DOS功能调用和汇编源程序相关的实验都是用EXE TEMPLATE程序完成的。

打开emu8086,在“welcome…”对话框中,单击按钮,创建文件。

在“choose code template”对话框中,选择“EXE template-advanced executable file.header: relocation, checksum.”后,单击按钮。

在如图所示的编辑界面中,已经可以给出了源程序的框架,包含数据段、堆栈段和代码段的定义以及必要的功能调用等,在“add your data here”和“;add your code here”部分可以分别输入相应的变量定义和指令。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验基础汇编语言程序设计
基础汇编语言程序设计是计算机科学与技术专业中的一门重要课程,它主要介绍了计算机汇编语言的基本概念、指令格式以及程序设计方法。

在这门课程中,学生将通过一系列实验来学习和掌握基础汇编语言程序设计的技能。

一、实验目的和要求
本实验的主要目的是让学生通过实际操作,了解和掌握基础汇编语言的编写和调试技巧。

具体要求如下:
1.学生能够理解和掌握汇编程序的结构和执行过程。

2.学生能够掌握汇编指令的基本格式和使用方法。

3.学生能够完成基础汇编程序的编写和调试。

二、实验内容和步骤
本实验将设计两个基础汇编程序,分别是计算一个整数的平方和计算一个整数的阶乘。

具体步骤如下:
1.实验一:计算一个整数的平方
(1)程序设计思路:
-通过输入一个整数,将其存储在寄存器中;
-将寄存器中的整数与自身进行乘法运算;
-将结果存储在另一个寄存器中;
-输出结果。

(2)程序设计步骤:
a.定义数据段和堆栈段;
b. 定义变量:整数num和结果result;
c.通过输入指令将一个整数存储在寄存器中;
d. 通过MOV指令将该寄存器中的整数存储在变量num中;
e. 通过MUL指令将变量num与自身相乘,结果存储在寄存器中;
f. 通过MOV指令将寄存器中的结果存储在变量result中;
g.通过输出指令将结果输出。

2.实验二:计算一个整数的阶乘
(1)程序设计思路:
-通过输入一个整数,将其存储在寄存器中;
- 定义一个变量result并初始化为1;
-循环执行乘法运算,将结果存储在寄存器中;
- 将结果存储在变量result中;
-输出结果。

(2)程序设计步骤:
a.定义数据段和堆栈段;
b. 定义变量:整数num和结果result;
c.通过输入指令将一个整数存储在寄存器中;
d. 通过MOV指令将该寄存器中的整数存储在变量num中;
e.通过MOV指令将立即数1存储在寄存器中;
f.通过循环指令循环执行乘法运算,将结果存储在寄存器中;
g. 通过MOV指令将寄存器中的结果存储在变量result中;
h.通过输出指令将结果输出。

三、实验结果和分析
将上述两个实验程序分别编写和调试完毕后,运行程序并输入测试数据,得到正确的运行结果。

通过分析实验结果,我们可以发现,基础汇编语言程序设计能够实现简单的数据计算和输出功能。

通过本实验的学习,我了解并掌握了基础汇编语言的程序设计方法,提高了编写和调试汇编程序的能力。

汇编语言虽然复杂,但它直接工作在计算机底层,可以更好地理解计算机系统的工作原理。

在今后的学习和工作中,我将继续深入学习汇编语言,不断提升自己的专业能力。

相关文档
最新文档