汇编语言实验报告七
- 格式:doc
- 大小:260.50 KB
- 文档页数:4
汇编语言程序设计实验报告汇编语言程序设计实验报告引言:汇编语言是计算机中最基本的语言,通常用于处理硬件相关问题。
在这个实验中,我们学习了汇编语言的基础知识和编程技巧,并实践了用汇编语言编写程序的方法和技巧。
以下是我们的实验报告。
正文:1. 实验环境我们使用的实验环境是Intel 8086微处理器与高级汇编语言。
微处理器使用的是PCB-512主板,而高级汇编语言是MASM。
2. 实验目的我们的实验目的主要是学习汇编语言的基础知识和编程技巧,包括了汇编语言的寄存器、指令、内存管理等方面的知识。
我们的另一个目的是掌握汇编语言的常用编程技巧,能够独立完成一些简单的汇编程序。
3. 实验内容我们的实验内容主要包括以下几点:(1)学习汇编语言的基础知识,包括寄存器、指令、内存管理等方面的知识。
(2)掌握汇编语言的常用编程技巧,包括数据输入输出、运算、跳转等基本操作。
(3)实践用汇编语言编写程序,如计算器、菜单等实用程序。
(4)了解8086微处理器的结构和原理。
4. 实验过程在这个实验过程中,我们完成了以下几个程序:(1)计算器计算器是一个简单的程序,主要用于实现两个数之间的加、减、乘、除等基本运算。
我们通过输入输出指令、存储指令等指令实现了这个程序的功能。
(2)菜单菜单是一个实用程序,主要用于展示一个简单的菜单并实现用户选择相关功能的功能。
我们使用了汇编语言中的跳转指令、输入输出指令等实现了这个程序。
5. 实验结果在我们的实验中,我们成功完成了上述两个程序。
我们通过输入输出指令、存储指令等指令实现了这个程序的功能。
6. 实验总结在这个实验过程中,我们学习汇编语言的基础知识和编程技巧,并实践了用汇编语言编写程序的方法和技巧。
我们通过编写计算器和菜单等简单实用程序,加深了对汇编语言的理解和认识。
我们认为这个实验对我们今后的学习和工作都有很大的帮助。
结论:通过这个实验,我们学习了汇编语言的基础知识和编程技巧,并实践了用汇编语言编写程序的方法和技巧。
汇编语言实验7实验报告一、实验目的本次实验旨在通过汇编语言编写程序,实现对字符串的操作和输出。
二、实验内容1. 编写一个汇编程序,要求从键盘输入一个字符串,并将其逆序输出到屏幕上;2. 编写一个汇编程序,要求从键盘输入两个字符串,并将它们拼接起来后输出到屏幕上。
三、实验过程1. 字符串逆序输出程序首先,需要从键盘输入一个字符串。
为了方便起见,我们可以先规定字符串的最大长度为100。
接着,我们需要定义两个变量:```buffer db 100 ; 用于存储输入的字符串length dw ? ; 存储输入的字符串长度```其中,db代表定义字节型变量,dw代表定义双字节型变量。
然后,我们需要使用INT 21H中断来读取用户输入的字符串。
具体而言,我们可以使用下面这段代码:```mov ah, 0Ah ; 设置INT 21H功能号为0Ahmov dx, offset buffer ; 将buffer的地址传给DX寄存器int 21h ; 调用INT 21H中断```该代码会将用户输入的字符串存储在buffer中,并且将其长度存储在length变量中。
接着,我们需要将该字符串逆序输出到屏幕上。
为了实现这个功能,我们可以使用栈来存储字符串中的每个字符,并逐个弹出来输出。
具体而言,我们可以使用下面这段代码:```mov si, offset buffer + 1 ; 将si寄存器指向字符串的第一个字符mov cx, length ; 将cx寄存器设置为字符串长度dec cx ; 字符串长度需要减1reverse:push byte ptr [si] ; 将当前字符压入栈中inc si ; 指向下一个字符loop reverse ; 循环直到所有字符都被压入栈中mov ah, 02h ; 设置INT 21H功能号为02h,表示输出一个字符print:pop dx ; 弹出栈顶元素int 21h ; 输出该字符loop print ; 循环直到所有字符都被弹出并输出完毕```2. 字符串拼接程序首先,需要从键盘输入两个字符串。
贵州师范大学实验报告实验室名称:白云综合楼703 实验日期:2012 年12 月 5 日学院(系)实验项目名称数学与计算专业、班级11 计算机机科学学院计算机组成基础之汇编语言实验七——寻址方式在结构化数据访问中的应用姓名指导老师成绩冉桂萍教师评语教师签名:年月日一、实验目的:1、掌握各种寻址方式的综合应用2、掌握双重循环问题的处理3、掌握结构化数据的访问二、实验任务Power idea 公司从 1975 年成立一直到1995 年的基本情况如下。
年份收入(千美元)雇员(人)人均收入(千美元)1975 16 3 ?1976 22 7 ?1977 382 9 ?1978 1356 13 ?⋯⋯⋯⋯⋯⋯⋯⋯1995 5937000 178000 ?在下面的程序中,已经定义如下的数据:assume cs:codesgdata segmentdb '1975','1976','1977','1978','1979','1980','1981','1982','1983'db '1984','1985','1986','1987','1988','1989','1990','1991','1992'db '1993','1994','1995';以上是表示 21 年的 21 个字符串dd 16,22,382,1356,2390,8000,1600,24486,50065,97479,140417,197514dd345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000; 以上是表示 21 年公司收入的 21 个 dword 型数据dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226dw 11542,14430,15257,17800; 以上是表示21 年公司雇员人数的21 个 word 型数据data endstable segmentdb 21 dup('year summ ne ?? ')table ends编程,将 data 段中的数据按如下的格式写入到table段中,并计算21年中的人均收入(取整),结果也按照下面的格式保存在table段中。
汇编语言常见问题实验报告(带正确源代码)汇编语言程序设计实验报告计科0803余廷钊2008420692010 7-7实验一:字符回显实验目的:掌握DOS 1号功能的调用。
实验原理:ah 里面放功能号。
用int21调用。
实验内容:code segment assume cs:code start :mov ah,1 ;功能号放入ah int 21h ;调用DOS 功能 mov ah,4ch ;返回DOS int 21h code ends end start结果分析:DOS 1号功能可以把键盘的输入回显到屏幕上。
技术支持:Michael 实验二:显示字符T实验目的:开ah=1int21h结掌握DOS 2号功能的调用。
实验原理:ah 里面放功能号。
DL 里面放要显示的字符,用int21调用。
实验内容:code segment assume cs:code start :mov dl,'T'mov ah,2 ;功能号存入int 21h ;调用 mov ah,4chint 21h code ends end start 技术支持:Michael结果分析:DOS 2 号功能可以吧 DL 中的数据按照它对应的ASK 码字符输出。
实验三:显示‘how are you ’实验目的:掌握利用DOS 功能显示字符串。
实验原理:DOS 9 号功能可以把DS :DX 中的字符串显示出来,一‘$’为结束识别。
实验内容: data segment开ah=2 int21h结DL=‘T ’message db 'How are you?',13,10,'$' data ends code segmentassume cs:code,ds:data start :mov ax,datamov ds,ax ;数据段地址给ds mov ah,9mov dx,offset message ;送入偏移地址int 21h ;功能调用mov ah,4ch int 21h code ends end start结果分析:DOS 9 号功能可以把以DS :DX 为首地址,以‘$’为结束的字符串输出。
汇编语言实验七实验报告汇编语言实验七实验报告一、实验目的本次实验的目的是了解多重循环结构的编程技巧,并使用它们对数据进行排序和搜索。
二、实验内容本实验内容主要包括:1.使用多重循环结构实现数据的排序,如冒泡排序、快速排序等;2.使用多重循环结构实现数据的搜索,如线性搜索、二分搜索等;3.使用结构化编程实现控制结构,如条件判断、循环结构等来完成数据的排序和搜索。
三、实验过程1. 冒泡排序本实验使用多重循环结构,采用冒泡排序的方法,实现对一组数据的排序。
具体代码如下:.model tiny.stack 100h.dataarray dw 3, 1, 4, 0, 5, 2count dw 6temp dw ?.codemain procmov ax,@data mov ds,axmov ax,array mov si,axmov cx,count mov cl,2l1:mov di,simov bx,[di] inc dil2:mov ax,[di] cmp ax,bxjng l3mov temp,ax mov [di],bx mov bx,temp l3:inc diloop l2inc sidec cxjnz l1 ;循环结束 mov ax,countsub ax,2l4:mov di,simov ax,[di]mov bx,[di+2]cmp bx,axjng l5mov temp,axmov [di],bxmov [di+2],temp l5:inc sidec axjnz l4 ;循环结束 tmov ax,4c00hint 21hmain endpend main上述代码主要实现了多重循环结构,包括两个重复循环:一个用来对数据进行比较,另一个用来循环处理剩下的数据项,直到排序完成。
2. 线性搜索接下来实现线性搜索的功能,具体代码如下:.model tiny.stack 100h.dataarray dw 3, 1, 4, 5, 0, 2count dw 6key dw 4add dw 0.codemain procmov ax,@datamov ds,axmov ax,arraymov di,axmov cx,countl1:cmp [di], keyjne l3jmp l2l3:inc diloop l1l2:mov ax,add mov bx,count sub bx,1mul bxadd ax,key mov bx,2div bxinc axmov bx,4mul bxmov di,axmov ax,array add ax,dimov si,axmov ax,[si] mov bx,keyje l4mov ax,-1l4:mov ax,4c00hint 21hmain endpend main上述代码主要实现了线性搜索的功能,通过比较数组中的每一项与给定的关键字,如果相同,则记录下该项的偏移量,然后根据偏移量计算出索引,最终返回数组中搜索到的数据。
汇编语言程序设计实验报告汇编语言程序设计实验报告引言汇编语言是一种低级语言,用于编写计算机的底层程序。
在计算机科学与技术领域,汇编语言程序设计是一门重要的课程。
本篇实验报告将介绍我在汇编语言程序设计实验中所学到的知识和经验。
实验目的本次实验的目的是通过编写汇编语言程序,加深对计算机底层原理的理解,并掌握汇编语言的基本语法和编程技巧。
实验环境在实验中,我使用了一台运行Windows操作系统的计算机,并安装了MASM 汇编语言开发工具。
实验内容1. 汇编语言基础知识在实验开始前,我先学习了汇编语言的基础知识。
汇编语言使用助记符来代表机器指令,与机器指令一一对应。
了解了寄存器、内存和指令的概念,并学会了如何使用它们来编写汇编程序。
2. 汇编语言程序设计在实验中,我编写了一些简单的汇编语言程序,以加深对汇编语言的理解和应用。
例如,我编写了一个计算两个数之和的程序,通过将两个数存储在寄存器中,并使用加法指令进行运算,最后将结果保存到指定的内存位置。
3. 汇编语言程序调试在编写汇编语言程序时,我遇到了一些错误和问题。
为了解决这些问题,我学会了使用调试工具来定位错误。
通过逐步执行程序,并观察寄存器和内存的变化,我能够找到程序中的错误并进行修正。
4. 汇编语言程序优化在实验中,我也尝试了对汇编语言程序进行优化,以提高程序的性能和效率。
通过减少指令的数量和使用更高效的算法,我成功地改进了程序的执行速度。
实验心得通过本次实验,我深刻体会到了汇编语言程序设计的重要性和挑战性。
汇编语言虽然复杂,但它能够直接操作计算机的硬件,提供了更高的灵活性和效率。
通过编写汇编语言程序,我不仅加深了对计算机底层原理的理解,还提高了问题解决和调试能力。
总结汇编语言程序设计实验是一门重要的课程,它为我们提供了学习计算机底层原理和编程技巧的机会。
通过实验,我掌握了汇编语言的基本知识和技巧,并成功编写和优化了汇编语言程序。
这次实验不仅加深了我的理论知识,还培养了我的实际操作能力。
王爽汇编实验(七)王爽汇编语⾔实验七1 assume cs:codesg2data segment3 db '1975','1976','1977','1978','1979','1980','1981','1982','1983'4 db '1984','1985','1986','1987','1988','1989','1990','1991','1992'5 db '1993','1994','1995'6;以上是表⽰21年的字符串 4 * 21 = 8478 dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,1975149 dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,593700010;以上是表⽰21年公司总收⼊的dword型数据 4 * 21 = 841112 dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,822613 dw 11542,14430,15257,1780014;以上是表⽰21年公司雇员⼈数的21个word型数据 2 * 21 = 4215data ends1617table segment18 db 21 dup ('year summ ne ?? ') ; 'year summ ne ?? ' 刚好16个字节19 table ends1 assume cs:code,ds:data,es:table23data segment4 db '1975','1976','1977','1978','1979','1980','1981','1982','1983'5 db '1984','1985','1986','1987','1988','1989','1990','1991','1992'6 db '1993','1994','1995'7;以上是表⽰21年的字符串 4 * 21 = 8489 dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,19751410 dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,593700011;以上是表⽰21年公司总收⼊的dword型数据 4 * 21 = 841213 dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,822614 dw 11542,14430,15257,1780015;以上是表⽰21年公司雇员⼈数的21个word型数据 2 * 21 = 4216data ends1718table segment19 db 21 dup ('year summ ne ?? ') ; 'year summ ne ?? ' 刚好16个字编程,将data段中的数据按如下格式写⼊到table段中,并计算21年中的⼈均收⼊(取整),结果也按照下⾯的格式保存在table段中别⼈的版本。
《汇编语言》实验报告班级网131学号139074272姓名王祥兵指导教师刘恒实验一汇编语言运行环境及方法、简单程序设计一、实验目的:1、熟悉汇编语言运行环境和方法2、了解如何使用汇编语言的编制程序。
3、熟悉DEBUG有关命令的使用方法。
4、利用DEBUG掌握有关指令的功能。
5、利用DEBUG运行简单的程序段。
二、实验内容:编写一程序:比较两个字符串string1和string2所含的字符是否相同。
若相同则显示‘match’,否则‘No match’。
三、实验步骤:1.在dos提示符下,进入MASM目录2.在MASM目录下启动EDIT编辑程序,输入源程序,并对其进行汇编,链接和运行3.记录每一步的命令,以及查看结果的方法四、程序代码:五、实验总结及教训1.代码运行结果:2.debug调试结果:熟悉了汇编环境的使用,学会了用debug来调试程序实验二:用DEBUG编程:使用堆栈段将AX和BX的内容进行交换一、实验目的:1、熟练掌握DEBUG的常用命令,学会用DEBUG调试程序。
2、掌握数据在内存中的存放方式和内存操作数的几种寻址方式。
3、掌握简单指令的执行过程。
二、实验内容: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]HLT三、实验要求:1、实验前要做好充分准备,包括汇编程序清单、调试步骤、调试方法,以及对程序结果的分析等。
汇编实验报告(适合初学者)汇编语言程序设计一、实验目的与要求1.熟悉汇编语言运行、调试环境及方法。
2.掌握简单汇编语言程序的设计方法。
3.熟悉调试工具DEBUG,并运用DEBUG工具调试程序。
二、实验内容根据下列要求,编写汇编源程序,汇编连接汇编源程序,并利用DEBUG工具调试程序,验证程序的正确性。
1.若X、Y、R、W是存放8位带符号数字节单元的地址,Z是16位字单元的地址。
试编写汇编程序,完成Z<-((W-X)/5-Y)某(R+2)①.程序算法流程图。
开始初始化AL=(W-X)AL=(W-X)/5CL=(W-X)/5-YAL=(R+2)Z=((W-X)/5-Y)某(R+2)结束②.源程序清单。
DATASEGMENTXDB1H;数据定义YDB0HRDB3HWDB6HZDW?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AX;段寄存器定义MOVAL,WSUBAL,X;求(W-X)CBW;字节转换为字MOVCL,5IDIVCL;(W-X)/5MOVCL,ALMOVAL,Y;(W-X)/5-YSUBCL,ALMOVAL,RADDAL,2;(R+2)IMULCL;((W-X)/5-Y)某(R+2)MOV[Z],AXADDAL,30H;输出结果MOVDL,AL;MOVAH,2INT21HMOVAH,4CHINT21HCODEENDSENDSTART③.程序运行结果。
④.调试过程中遇到的问题和解决的方法。
还未能实现动态的输入数据,对指令的不熟悉,以至于在程序中经常性出错,得掌握固定的程序功能。
2.试编写一个程序,测试数是否是奇数。
如该数是奇数,则把DL的第0位置1,否则将该位置0。
①.程序算法流程图。
开始AL=XAL右移一位得CF否CF==1是DL与000000001B相或DL与11111110B相与结束②.源程序清单。
DATASEGMENTXDB9H;数据定义DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AX;段寄存器定义MOVAL,XSHR AL,1;利用右移一位得到cf值,JB判断 JB NEXT;为1则为奇数ANDDL,11111110B;偶数DL第一个数置为0JMPEXITNEXT:ORDL,000000001B;奇数DL第一个数置为1EXIT:MOVAH,4CHINT21HCODEENDSENDSTART③.程序运行结果。
汇编实验报告一、实验目的本次汇编实验的主要目的是深入了解汇编语言的基本语法和编程结构,掌握汇编程序的编写、调试和运行过程,提高对计算机底层硬件的理解和操作能力。
二、实验环境1、操作系统:Windows 102、编程工具:MASM(Microsoft Macro Assembler)三、实验内容1、数据传送与运算编写程序实现不同寄存器之间的数据传送。
进行简单的算术运算,如加法、减法、乘法和除法,并将结果存储在指定的寄存器或内存单元中。
2、逻辑运算与移位操作进行逻辑运算,包括与、或、非和异或操作。
实现移位操作,如左移和右移,并观察数据的变化。
3、分支与循环结构使用条件跳转指令实现分支结构,根据不同的条件执行不同的代码段。
运用循环指令实现循环操作,如计数循环和条件循环。
4、子程序调用编写子程序来完成特定的功能,如计算阶乘、查找最大值等。
在主程序中调用子程序,并传递参数和获取返回值。
四、实验步骤1、数据传送与运算打开 MASM 编程工具,新建一个汇编源文件。
使用 MOV 指令将数据从一个寄存器传送到另一个寄存器,例如:MOV AX, BX 。
进行加法运算,使用 ADD 指令,如:ADD AX, CX 。
进行减法运算,使用 SUB 指令,如:SUB DX, BX 。
乘法运算使用 MUL 指令,除法运算使用 DIV 指令,并将结果存储在合适的位置。
2、逻辑运算与移位操作在源文件中使用 AND 、OR 、NOT 和 XOR 指令进行逻辑运算,例如:AND AX, BX 。
对于移位操作,使用 SHL (左移)和 SHR (右移)指令,如:SHL AX, 2 表示将 AX 的值左移 2 位。
3、分支与循环结构使用 CMP 指令比较两个值,然后根据比较结果使用 JZ (等于零跳转)、JL (小于跳转)、JG (大于跳转)等条件跳转指令实现分支结构。
对于循环结构,使用 LOOP 指令实现计数循环,例如:MOV CX, 10 ;LABEL: ;LOOP LABEL 。
汇编语言实验报告实验一、汇编运行环境及方法、简单程序设计一、程序说明本程序用来比较两个字符串string1和string2所含的字符是否相同。
若相同’,否则显示‘No match’。
则显示‘Match在程序的数据段先定义两个字符串string1和string2,再定义两个字符串mess1’和‘Nomatch’。
再代码段比较字符串string1和string2,和mess2,分别代表‘Match通过比较判断是否相同。
若相同则显示‘Match’,否则显示‘No match’。
二、调试说明再EDIT中建立ASM文件,再用汇编程序对源程序汇编产生目标文件Obj,再用连接程序产生执行文件EXE。
再用Debug进行调试。
其中常用到的指令有:用-g命令来用运行程序,用-u命令来显示程序,用-d 命令来查看数据段的情况,-e或-f命令来修改需要改正的部分,用-t指令来逐步执行程序,用-r指令来查看寄存用器和修改寄存器的值,-q命令用来退出debug程序。
在这些命令的后面加上地址,可以将命令执行到相应的地方。
如用-g指令运行程序后,再用-u指令显示程序的执行借给如下:若将string2改为'Move the cursor backwards.',程序的其他部分不做改动,执行结果:若将mov cx,25语句改成mov cx,24,结果为:此时少做了一次循环,得到的结果就不正确了。
实验二、用DEBUG编程:使用堆栈段将AX和BX的内容进行交换等一、程序说明本实验包括两个部分,第一个部分是将AX和BX的内容进行交换,并用堆栈作为两寄存器交换内容的中间存储单元;第二部分是用DEBUG的命令将存储器偏移地AH, 0BH,0CH,0DH,0EH。
在DEBUG状态址300H,304H连续单元顺序装入0 下送入给出的程序中。
第一个程序先将AX的内容进栈,然后将BX的内容赋给AX,再将出栈的内容赋给BX即可。
第二个程序是在进入debug后,用-a指令输入给出的程序,然用-r指令安要求修改内存的内容,再用-t指令逐步执行每条指令,看修改的内存内容对指令执行结果的影响。
目录实验1 利用DEBUG调试汇编语言程序段 (1)实验2 初级程序的编写与调试实验(一) (5)实验3 初级程序的编写与调试实验(二) (14)实验4 汇编语言程序上机过程 (19)实验5 分支程序实验 (22)实验6 循环程序实验 (26)实验7 子程序实验 (30)实验1 利用DEBUG调试汇编语言程序段一.实验目的1.熟悉DEBUG有关命令的使用方法;2.利用DEBUG掌握有关指令的功能;3.利用DEBUG运行简单的程序段。
二.实验环境PC微机DOS操作系统、Windows操作系统三.实验内容1.进入和退出DEBUG程序;1)开始—运行,输入cmd,点确定进入命令窗口2)在命令窗口中输入dubug进入debug程序3)进入debug窗口后,输入q命令退出debug2.学会DEBUG中的1)D命令(显示内存数据D 段地址:偏移地址)-D100 ;显示DS段, 0100开始的128个字节内容-D ;默认段寄存器为DS,当前偏移地址(刚进入debug程序偏移地址为0100H)-D DS:100 ;显示DS段, 0100H开始的128个字节内容-D CS:200 ;显示CS段, 0200H开始的128个字节内容-D 200:100 ;显示DS段, 0200:0100H开始的128个字节内容-D 200 ;显示DS段, 0200H开始的128个字节内容-D 100 L 10 ;显示DS段, 100H开始的100H个字节内容2)E命令(修改指定内存)-E DS:100 F3 ‘AB’ 8D ; 把DS段中0100H开始的四个字节修改为F3 ‘AB’(A和B的ASCII 码) 8D也可以按下面的方式实现3)R命令(显示当前寄存器的内容)4)T命令(设置陷井,单步执行)5)A命令(将指令直接汇编成机器码输入到内存中。
)使用A命令在0100H开始输入指令mov ax, 10 inc cx mov bl, al单步执行上述指令6)G命令等的使用(执行A命中输入的汇编指令)使用A命令在0100H开始输入指令mov ax, 10 inc cx mov bl, al int 3然后使用g命令执行上面的例子设断点在100H处然后用T命令单步执行实验2 初级程序的编写与调试实验(一)一.实验目的1.进一步熟悉DEBUG命令;2.掌握数据在内存中的存放方式和内存操作数的几种寻址方式,段寄存器和物理地址计算;3.熟悉数据传送指令、算术运算指令、逻辑指令、数据串传送程序和数据串传送指令MOVS、STOS及重复前辍REP;4.掌握简单的汇编语言程序编写与调试。
综合性设计性实验报告班级:计算机科学与技术专2014 级 4 班实验项目名称:循环显示1 0 个数字符号实验项目性质:综合性实验所属课程:计算机组成原理与汇编语言实验室(中心):实验室(4 0 7 )指导教师:实验完成时间: 2016 年 5 月 27一、实验目的(1)掌握子程序的定义和调用方法。
(2)掌握子程序的编写方法及参数传递的方法。
二、实验内容及要求本实验内容主要是编写一个显示过程汇编程序,使得在屏幕上依次显示10 个数字符号,每一行13 个字符,然后循环进行显示。
实验要求是在代码段中编写这个过程,并要求用主程序调用该过程。
三、实验设备及软件实验室(407)电脑一台以及编译器DEBUG MASM LINK软件。
四、设计方案㈠题目(老师给定或学生自定)循环显示10个字符㈡设计的主要思路首先,先定义一个数据段和代码段。
数据段内定义一个名称为prl大小为一个字节的字符串,即本人学号。
代码段内首先借助段寻址伪指令ASSUME规定好代码段和数据段分别在段寄存器CS、DS。
然后start内将数据段段地址放入DS中。
接下来定义一个子程序dgdsp,其实现的功能主要是先将bl(字符数目控制)清零,dl(字符范围0-9)赋值为字符0的ascll码。
然后定义一个lp循环,循环内调用DOS2号功能显示字符,并bl、dl自增,接着比较dl与字符9的ascll码值的大小,若大于就将dl重置为字符0的ascll码。
若小于则跳转到next循环,next循环中主要比较bl与13的大小,若小于则跳转到lp,若大于就进入bbb子程序。
bbb子程序主要是先保护DX将其压栈,然后使用DOS9号功能显示prl字符串,最后将DX出栈。
然后进入next循环将DX压栈,分别使用DOS0a、02号功能将dl输入显示,最后将DX出栈。
分别将bl、al清零,最后跳转到lp子程序继续循环执行。
流程图如下:㈢主要功能在屏幕上依次显示10 个数字符号(0-9),每一行13 个字符,然后换行,最后循环进行显示。
汇编语言程序设计实验报告汇编语言程序设计实验报告引言:汇编语言是一种底层的计算机语言,通过直接操作计算机的硬件和寄存器来实现程序的功能。
在本次实验中,我们学习了汇编语言的基本语法和编程技巧,并通过实践编写了一些简单的程序。
本报告将对实验过程和结果进行总结和分析。
一、实验目的本次实验的主要目的是让我们掌握汇编语言的基本语法和操作方式,培养我们对计算机底层运行机制的理解能力。
通过编写汇编程序,我们可以更深入地了解计算机的运行原理,并且可以更加高效地编写一些底层程序。
二、实验环境本次实验使用的是Windows操作系统,并且我们使用了MASM汇编器来编译和运行我们的汇编程序。
MASM是一款经典的汇编语言开发工具,具有强大的功能和广泛的应用领域。
三、实验内容在本次实验中,我们完成了以下几个任务:1. 编写一个简单的汇编程序,实现两个数字的相加功能。
2. 编写一个汇编程序,实现对一个字符串进行反转。
3. 编写一个汇编程序,实现对一个数组进行排序。
四、实验步骤1. 首先,我们学习了汇编语言的基本语法和指令集。
了解了汇编语言中的寄存器、指令和内存等概念,并且学会了如何使用它们来编写程序。
2. 接着,我们开始编写第一个程序,实现两个数字的相加功能。
通过学习汇编语言中的加法指令,我们可以将两个数字加载到寄存器中,并且使用相应的指令进行相加操作。
3. 然后,我们编写了第二个程序,实现对一个字符串进行反转。
通过学习汇编语言中的循环和条件判断指令,我们可以逐个字符地读取字符串,并且将它们按照相反的顺序存储到新的内存空间中。
4. 最后,我们编写了第三个程序,实现对一个数组进行排序。
通过学习汇编语言中的比较和交换指令,我们可以对数组中的元素进行排序,并且将排序结果存储到新的内存空间中。
五、实验结果通过以上的实验步骤,我们成功地完成了编写汇编程序的任务,并且得到了正确的结果。
我们的程序可以实现两个数字的相加、字符串的反转和数组的排序功能,并且运行速度较快,效果较好。
实验名称:汇编语言顺序程序设计实验报告实验目的:通过本次实验,学生能够掌握使用汇编语言编写顺序程序的基本方法,理解汇编语言的基本结构和运行机制。
实验内容:1. 汇编语言基础知识1.1 汇编语言的概念1.2 汇编语言的特点1.3 汇编语言的应用领域2. 汇编语言程序设计2.1 程序设计的基本流程2.2 程序设计的基本步骤2.3 汇编语言程序设计的规范与技巧3. 实验步骤3.1 确定实验题目和要求3.2 分析实验任务,设计程序流程图3.3 编写汇编程序3.4 调试程序,确保程序正确运行3.5 编写实验报告4. 实验报告要求4.1 实验题目4.2 实验目的4.3 实验内容和步骤4.4 程序设计思路和实现方法4.5 实验结果分析和讨论4.6 实验心得体会实验过程:1. 确定实验题目和要求本次实验的题目为“汇编语言顺序程序设计”,要求学生使用汇编语言编写一个顺序程序,实现指定的功能要求。
2. 分析实验任务,设计程序流程图在开始编写汇编程序之前,我们首先要明确实验的功能需求,然后设计程序的流程图,规划程序的整体结构。
3. 编写汇编程序在设计好程序流程后,根据汇编语言的语法规则,编写相应的程序代码,并确保程序的逻辑正确,语法无误。
4. 调试程序,确保程序正确运行编写完成程序后,需要对程序进行调试,逐步检查程序运行过程中的各个环节,发现并修复可能存在的错误。
5. 编写实验报告我们需要撰写本次实验的实验报告,详细记录实验的整体过程,包括程序设计思路、程序实现方法、实验结果分析和讨论,以及实验心得体会。
实验结果分析和讨论:经过本次实验,我们掌握了汇编语言顺序程序设计的基本方法和技巧,了解了汇编语言程序设计的规范和要求。
在实验过程中,我们遇到了一些问题和困难,但通过不懈的努力和团队合作,最终成功完成了实验任务,并取得了令人满意的成绩。
实验心得体会:通过本次实验,我们深刻认识到汇编语言在计算机领域中的重要性和应用价值,同时也意识到汇编语言程序设计的复杂性和技术挑战。
汇编语言实验报告实验七实验七一.实验目的1.体验并了解DOS界面下色彩显示2.了解并掌握INT10功能BIOS调用显示屏幕控制二.实验原理及要求将实验代码键入计算机中在屏幕中间建立一个20列宽和9高的窗口,然后把键入的内容在这窗口显示出来。
键入的字符将被显示在窗口的最后一行,每当输入20个字符,该行就向上卷动,9行字符键入完成后,顶端行的内容丢失。
观察并记录实验现象,然后更改实验代码将显示字符背景改为蓝色,字符颜色改为红色,并使其闪烁。
三.实验代码原代码:Codes segmentAssume cs:codesMov ah,6;屏幕初始化功能号Mov al,0;全屏幕为空白Mov ch,0 ;左上角行号Mov cl,0 ;右上角列号Mov dh,24 ;右下角行号Mov dl,79 ;右下角列号mov bh,0111b ;卷入行属性Int 10hPoscurse:Mov ah,2 ;置光标位置功能号Mov dh,16 ;行Mov dl,30 ;列Mov bh,0 ;页号Int 10hMov cx,20Getchar:Mov ah,1Int 21hCmp al,'Q'Jz exitLoop getcharMov ah,6 ;屏幕初始化功能号Mov al,1 ;上卷行数Mov ch,8 ;左上角行号Mov cl,30 ;左上角列号Mov dh,16Mov dl,50Mov bh,0111bint 10hJmp poscurseExit:Mov ah,4chInt 21hCodes endsEnd更改后代码:Codes segmentAssume cs:codesMov ah,6 ;屏幕初始化功能号Mov al,0 ;全屏幕为空白Mov ch,0 ;左上角行号Mov cl,0 ;右上角列号Mov dh,24 ;右下角行号Mov dl,79 ;右下角列号Int 10hPoscurse:Mov ah,2 ;置光标位置功能号Mov dh,16 ;行Mov dl,30 ;列Mov bh,0 ;页号Int 10hMov ah,6 ;屏幕初始化功能号Mov al,1 ;上卷行数Mov ch,8 ;左上角行号Mov cl,30 ;左上角列号Mov dh,16Mov dl,50Mov bh,10010100bint 10hMov cx,20Getchar:Mov ah,1Int 21hCmp al,'Q'Jz exitLoop getcharJmp poscurseExit:Mov ah,4chInt 21hCodes endsEnd四.实验过程1.打开DOS操作界面;2.将代码输入到edit环境中并在e:盘中MASM文件夹下保存为1.asm文件;3.在MASM文件夹下用MASM程序编译文件1.asm并在该文件夹中保存为1.obj文件;4.在MASM文件夹下用LINK程序链接文件1.obj并正在该文件夹下保存为1.exe可执行程序;5.在DOS操作界面下输入1.exe观察程序运行结果,并记录。
贵州师范大学实验报告
实验室名称:白云综合楼703 实验日期:2012年12 月5 日
;以上是表示21年公司雇员人数的21个word型数据
data ends
table segment
db 21 dup('year summ ne ')
table ends
编程,将data段中的数据按如下的格式写入到table段中,并计算21年中的人均收入(取整),结果也按照下面的格式保存在table段中。
三、实验过程原始记录
1、源程序
codesg segment
start:
mov ax,data
mov ds,ax
mov ax,table
mov es,ax
mov si,0
mov di,0
mov cx,21
s:
mov ax,ds:[si]
mov es:[di],ax
mov ax,ds:[si+2]
mov es:[di+2],ax
mov ax,ds:[si+84]
mov es:[di+5],ax
mov dx,ds:[si+84+2]
mov es:[di+7],dx
push cx
mov cx,ds:[84+84+bx]
mov es:[di+0ah],cx
div cx
pop cx
mov es:[di+0dh],ax add si,4
add bx,2
add di,16
loop s
mov ax,4c00h
int 21h
codesg ends
end start
2、编译、连接过程记录
3、用Debug中的d命令验证实验结果
四、实验中发现的问题总结:。