汇编语言实验报告 20112914
汇编语言实验报告

汇编语言实验报告在计算机科学中,汇编语言是一种底层的编程语言,直接使用计算机的指令集来写程序。
与高级语言(如C ++或Java)不同,汇编程序被编写为显式的机器代码,它们可以直接在计算机上执行。
在本次实验中,我们学习了汇编语言的基础知识,并设计了一个简单的程序来演示操作系统,此程序可以打印字符串、读入字符和执行其他一些简单的操作。
我们了解了汇编语言的基本概念,例如寄存器、指令和标志位。
寄存器是CPU内部的存储空间,可用于存储数据或执行算术操作。
指令是CPU执行的单个操作,例如将数据移动到寄存器中,从寄存器中加载数据,或将数据存储到内存中。
标志位是CPU中的一些标志,用于指示例如进位或溢出等特定条件的发生情况。
之后,我们学习了如何使用汇编语言来执行简单的操作。
我们使用了mov指令将数据移动到寄存器中,使用int指令调用中断,以及使用jmp指令跳转到不同的程序行。
我们设计了一个简单的操作系统,它通过汇编程序来控制计算机的操作。
该操作系统具有以下主要功能:1. 打印字符串。
我们使用了mov指令将字符串中的数据加载到寄存器中,并使用int 指令调用中断来打印字符串。
2. 读入字符。
我们使用了int指令调用中断来读取用户输入的字符,然后将其存储在寄存器或内存中。
3. 执行简单的操作。
我们使用了jmp指令和标志位来执行条件分支,或使用算术指令来进行加减等操作。
在实验中,我们还学习了如何在调试模式下运行程序,以及如何使用汇编编译器将汇编代码转换为机器代码。
我们还使用了调试器来跟踪程序运行时的寄存器和内存内容,以及使用断点来在程序执行时停止并检查状态。
本次实验使我们更深入地了解了汇编语言的工作原理,并学习了如何设计和实现简单的操作系统。
通过了解和理解汇编语言,我们的编程能力将得到提高,帮助我们更好地理解计算机的内部工作原理。
《汇编语言》实验报告

《汇编语言》实验报告实验名称:汇编语言实验报告实验目的:通过实验了解汇编语言的基本概念、语法结构和程序设计方法,掌握汇编语言的编写方法。
实验时间:2024年1月1日实验地点:实验室一、实验背景汇编语言是计算机硬件和软件之间的桥梁,通过汇编语言可以直接操作计算机的底层硬件。
汇编语言是一种低级语言,使用汇编语言可以实现对计算机内存、寄存器等硬件资源的直接操作,从而实现程序的功能。
本实验通过编写汇编语言程序,加深对汇编语言的理解。
二、实验过程1. 确定实验环境:使用DOSBox模拟DOS环境进行汇编程序编写和调试。
2. 编写第一个汇编程序:编写一个简单的汇编程序,将字符串“Hello, World!”输出到屏幕上。
3.程序分析:a.定义要输出的字符串,将字符串存储在数据段中。
b.设置段寄存器,将数据段地址加载到DS寄存器中。
c.设置显示模式和光标位置。
d.将字符串逐个字符输出到屏幕上。
e.关闭显示模式。
4. 编译运行:使用汇编语言的编译器将汇编程序转换成机器码,并在DOSBox中运行程序。
5.调试程序:根据程序运行结果和分析,调试程序中存在的错误,并进行改正。
三、实验结果与分析经过多次编写和调试,我们成功实现了将字符串“Hello, World!”输出到屏幕上的功能。
通过程序分析和调试过程,加深了对汇编语言的理解和掌握。
四、实验总结通过本次实验,我们深入了解了汇编语言的基本概念、语法结构和程序设计方法。
通过实际编写汇编语言程序,对汇编语言的编写方法有了更加深入的认识。
同时,通过调试程序的过程,我们也提高了自身的问题解决能力和分析能力。
在今后的学习和工作中,我们将继续学习和深入研究汇编语言,提高自己的编程能力和创新思维能力。
总体而言,本次实验给我们带来了很大的收获,我们以后将更加努力地学习汇编语言,提高自己的编程水平,为以后的学习和工作做好充分的准备。
汇编语言实验报告

汇编语言实验报告专业:班级:姓名:学号:2011年12月14日目录实验1 利用DEBUG调试汇编语言程序段 (3)实验2 初级程序的编写与调试实验(一) (11)实验3 初级程序的编写与调试实验(二) (20)实验4 汇编语言程序上机过程 (28)实验5 分支程序实验 (33)实验6 循环程序实验 (40)实验7 子程序实验 (45)实验1 利用DEBUG调试汇编语言程序段一.实验目的1.熟悉DEBUG有关命令的使用方法;2.利用DEBUG掌握有关指令的功能;3.利用DEBUG运行简单的程序段。
二.实验内容1.进入和退出DEBUG程序;1)开始—运行,输入cmd,点确定进入命令窗口2)在命令窗口中输入dubug进入debug程序3)进入debug窗口后,输入q命令退出debug2.学会DEBUG中的1)D命令(显示内存数据D 段地址:偏移地址)例1:-D100 ;显示DS段, 0100开始的128个节内容说明: 指定要显示其内容的内存区域的起始和结束地址,或起始地址和长度。
① D SEGREG[起始地址] [L 长度];显示SEGREG段中(缺省内默认为DS), 以[起始地址] (缺省内为当前的偏移地址),开始的[L 长度] (缺省内默认为128)个字节的内容.② D SEGREG[段地址:偏移地址];显示SEGREG段中(缺省内默认为DS), [段地址:偏移地址] 开始的[L 长度] (缺省内默认为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开始的8H个字节内容2)E命令(修改指定内存)-E100 11 22 33 44 55 66 77 88-D 100结果:0AF1:0100 11 22 33 44 55 66 77 88例2:-E 100:E 地址数据表;从指定的地址开始用数据表给定的数据修改存储单元。
大学课程汇编语言的实验报告

实验报告实验课程:学生姓名:学号:专业班级:电气信息类III班2011年12月20日目录(1)汇编语言程序上机过程 (2)(2)字符串处理程序实验 (6)(3)子程序实验 (13)(4)中断程序实验 (21)(5)C++调用汇编子程序 (25)南昌大学实验报告---(1)汇编语言程序上机过程学生姓名:学号:专业班级:实验类型:□验证■综合□设计□创新实验日期:2011.11.12/13 实验成绩:一、实验目的熟练掌握汇编语言程序的编辑、调试和运行的过程和方法。
了解汇编语言程序的汇编、运行环境。
二、实验内容1.掌握常用的编辑工具软件(如WORD、EDIT)、MASM和LINK的使用;2.伪指令:SEGMENT,ENDS,ASSUME,END,OFFSET,DUP;3.利用的INT 21H的1号功能实现键盘输入的方法;三、实验环境PC微机DOS操作系统或Windows 操作系统MASM.EXE,LINK.EXE,或宏汇编集成环境四、实验要求1.仔细阅读有关伪指令SEGMENT,ENDS,ASSUME,END,OFFSET,DUP的内容;2.了解利用的INT 21H的1号功能实现键盘输入的方法,了解.EXE文件和.COM文件的区别及用INT 21H 4C号功能返回系统的方法;3.阅读下面程序段。
五、主要实验步骤程序:data segmentmessage db 'This is a sample program of keyboard and disply'db 0dh,0ah,'Please strike the key!',0dh,0ah,'$'data endsstack segment para stack 'stack'db 50 dup(?)stack endscode segmentassume cs:code,ds:data,ss:stackstart: mov ax,datamov ds,axmov dx,offset messagemov ah,9int 21hagain: mov ah,1int 21hcmp al,1bhje exitcmp al,61hjc ndcmp al,7ahja ndand al,11011111bnd: mov dl,almov ah,2int 21hjmp againexit: mov ah,4chint 21hcode endsend start实验步骤:1.用用文字编辑工具(记事本或EDIT)将源程序输入,其扩展名为.ASM。
汇编语言程序设计实验报告

汇编语言程序设计实验报告汇编语言程序设计实验报告引言汇编语言是一种低级语言,用于编写计算机的底层程序。
在计算机科学与技术领域,汇编语言程序设计是一门重要的课程。
本篇实验报告将介绍我在汇编语言程序设计实验中所学到的知识和经验。
实验目的本次实验的目的是通过编写汇编语言程序,加深对计算机底层原理的理解,并掌握汇编语言的基本语法和编程技巧。
实验环境在实验中,我使用了一台运行Windows操作系统的计算机,并安装了MASM 汇编语言开发工具。
实验内容1. 汇编语言基础知识在实验开始前,我先学习了汇编语言的基础知识。
汇编语言使用助记符来代表机器指令,与机器指令一一对应。
了解了寄存器、内存和指令的概念,并学会了如何使用它们来编写汇编程序。
2. 汇编语言程序设计在实验中,我编写了一些简单的汇编语言程序,以加深对汇编语言的理解和应用。
例如,我编写了一个计算两个数之和的程序,通过将两个数存储在寄存器中,并使用加法指令进行运算,最后将结果保存到指定的内存位置。
3. 汇编语言程序调试在编写汇编语言程序时,我遇到了一些错误和问题。
为了解决这些问题,我学会了使用调试工具来定位错误。
通过逐步执行程序,并观察寄存器和内存的变化,我能够找到程序中的错误并进行修正。
4. 汇编语言程序优化在实验中,我也尝试了对汇编语言程序进行优化,以提高程序的性能和效率。
通过减少指令的数量和使用更高效的算法,我成功地改进了程序的执行速度。
实验心得通过本次实验,我深刻体会到了汇编语言程序设计的重要性和挑战性。
汇编语言虽然复杂,但它能够直接操作计算机的硬件,提供了更高的灵活性和效率。
通过编写汇编语言程序,我不仅加深了对计算机底层原理的理解,还提高了问题解决和调试能力。
总结汇编语言程序设计实验是一门重要的课程,它为我们提供了学习计算机底层原理和编程技巧的机会。
通过实验,我掌握了汇编语言的基本知识和技巧,并成功编写和优化了汇编语言程序。
这次实验不仅加深了我的理论知识,还培养了我的实际操作能力。
计算机汇编语言实验报告

计算机汇编语言实验报告一、实验目的本实验旨在通过编写计算机汇编语言程序,加强对计算机组成原理和汇编语言的理解,同时熟悉实际编写和调试过程。
二、实验内容1.用汇编语言编写一个简单的计算器程序,实现加法和减法操作。
2.编译并运行程序,测试其功能的正确性。
3.运用调试工具进行程序的调试,检查代码的运行流程。
三、实验步骤1.确定程序功能和设计思路:本次实验的目标是编写一个计算器程序,能够对两个数进行加法和减法操作。
我们可以通过定义一些操作码来表示不同的操作,再通过输入不同的操作码来执行相应的操作。
2.编写汇编语言程序:首先,需要定义一些变量和常量来存储输入的数和操作码。
然后,使用汇编语言的运算指令和控制指令来实现加法和减法操作,并将结果存储到指定的变量中。
最后,使用输出指令来显示结果。
3.编译并运行程序:将汇编语言程序编译为机器码,并通过计算机的指令集执行程序。
4.调试程序:利用调试工具,逐步执行程序,检查代码的运行流程和结果的正确性。
如有错误,进行适当的修改和调试。
5.测试功能和性能:使用不同的数和操作码进行测试,验证程序的功能和正确性。
四、实验结果经过编写、编译和调试,我们成功实现了一个简单的计算器程序。
程序能够根据输入的操作码,对两个数进行加法和减法操作,并将结果显示出来。
经过多次测试,程序的功能、正确性和性能都符合预期要求。
五、实验感想通过本次实验,我们对计算机组成原理和汇编语言有了更深入的理解。
在编写程序的过程中,我们发现汇编语言相比高级语言更加底层,需要考虑更多的细节和机器指令的使用。
同时,我们也意识到了调试的重要性,调试工具能够帮助我们分析和修正代码的错误,提高程序的质量。
六、实验总结通过本次实验,我们对计算机汇编语言的应用有了更深入的了解。
我们掌握了汇编语言程序的基本结构和语法规则,学会了使用汇编语言指令进行计算和控制。
同时,我们也提升了调试和测试的能力,加深了对计算机组成原理和汇编语言的理解。
汇编语言实验报告

汇编语言实验报告实验一汇编语言的源程序的输入一、实验目的1.通过实验了解和熟悉微机系统的配置2.学习在DEBUG状态下输入汇编源程序的方法3.初步掌握调试(在DEBUG状态下)的过程二、实验原理1.本实验在DEBUG状态下输入汇编源程序,并且用DEBUG命令进行调试,用单步跟踪的方法试验指令的功能;2.以下是给定的参考程序,并在实验时每条指令的“;”等号右边按要求填写指令的分析结果。
三、实验步骤1.开机后进入DOS系统2.用DEBUG的REGISTER命令检查所有寄存器内容,并作记录R[寄存器名]3.用DEBUG的ASSEMBLE命令输入汇编源程序A[内存地址]4.用DEBUG的UNASSEMBLE命令反汇编U[起始地址][终止地址]5.用DEBUG的TRACE命令单步跟踪程序T[起始地址][终止地址]6.用DEBUG的DUMP命令显示存贮器单元的内容四、参考程序及结果MOV AX,2000 ;AL=00MOV DS,AX ;DS=2000NOT AX ;AX=DFFFXOR AX,AX ;AX=0000DEC AX ;AX=FFFFINC AX ;AX=0000MOV BX,2030 ;BH=20MOV SI,BX ;SI=2030MOV [SI],BL ;[2030H]=30MOV WORD PTR[SI],10F ;[2030H]=0F [2030H]=01 MOV DI,SI ;DI=2030MOV [DI+50],BH ;[DI+50]=20MOV BH,[SI] ;BH=0FMOV BL,[DI+50] ;BL=20MOV SP,5000PUSH AX ;AX=0 [SS:4FFEH]=00H [SS:4FFFH]=00H PUSH BX ;BX=0F20 [SS:4FFCH]=20H [SS:4FFDH]=0FH POP AX ;AX=0F20POPF ;F=00000000NEG BX ;BX=F0E0XCHG BX,AX ;BX=0F20STD ;F=01010001STI ;F=01110001CLD ;F=00110001CLI ;F=00010001ADC DI,2050 ;DI=4081 F=00000010ADC SP,DI ;SP=9081 F=10010010ADC AX,1500 ;AX=05E0 F=00000001SUB AX,BX ;AX=F6C0 BX=0F20SHL AH,1 ;AH=ECRCL AX,1 ;AX=D981SHR BX,1 ;BH=07RCR BL,1 ;BL=90MOV CL,4MOV DX,80F0ROL DX,CL ;DX=0F08 CL=04INT 20 ;CS=00A7 IP=1072实验二数据的建立与传送程序一、实验目的1.学习DEBUG命令2.验证指令的功能二、实验原理在DEBUG状态下,输入程序,用G命令进行连续方式执行程序,用DUMP命令查看建立的数据块内容三、参考程序及结果1.在内存1000单元开始,建立00H~0FH~00H 31个数,要求00H~0FH数据逐渐增大,0FH~00H逐渐减小,程序从内存CS:0100H地址开始输入MOV AX ,100HMOV DS ,AXMOV SI,0MOV CL ,0FHXOR AX,AXPPE1: MOV [SI] ;ALINC SI ;INC ALDEC CLJNZ PPE1MOV CX,10HPPE2:MOV[SI],ALINC SIDEC ALLOOP PPE2INT 20H数据块的内容1000:0000:00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 1000:0100:0E 0D 0C 0B 0A 09 08 07 06 05 04 03 02 01 002.把上一程序的执行结果分几种方式传送到以下指定区域(a)该程序从内存CS:0150H开始输入,把数据块传送到15050H 开始的存储区域中MOV AX,1000HMOV DS,AXMOV SI,0MOV DI,5050HMOV CX,1FHPPEA: MOV AL,[SI]MOV [DI],ALINC SIINC DILOOP PPEAINT 20H结果:1000:5050 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 1000:5060 0E 0D 0C 0B 0A 09 08 07 06 05 04 03 02 01 00(b)用串传送指令MOVSB,把数据块传送到15150H开始的区域,该程序从内存CS:0200H开始输入MOV AX,100HMOV DS,AXMOV ES,AXMOV SI,0MOV DI,5150HMOV CS,1FHCLDPPEB: MOVSBLOOP PPEBINT 20H结果:1000:5150 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 1000:5160 0E 0D 0C 0B 0A 09 08 07 06 05 04 03 02 01 00(C)用重复串操作指令”REP MOVSB”把数据传送到15250H开始的区域,该程序从CS:250H地址开始输入MOV AX,1000HMOV DS,AXMOV ES,AXMOV SI,0MOV DI,5250HMOV CX,1FHCLDREPZMOVSBINT 20H结果:1000:5250 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 1000:5260 0E 0D 0C 0B 0A 09 08 07 06 05 04 03 02 01 00(c)用串操作的减量工作方式,把数据传送到25050H开始的区域,该程序从CS:0300H开始输入MOV AX,1000HMOV DS,AXADD AX,AXMOV ES,AXMOV SI,1EHMOV DI,506EHMOV CX,1FHSTDREP MOVSBINT 20H结果:2000:5050 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 2000:5060 0E 0D 0C 0B 0A 09 08 07 06 05 04 03 02 01 00实验四统计学生成绩程序一、实验目的进一步掌握分支程序和循环程序的编写方法二、实验原理设有10个学生的成绩分别为56,69,84,82,73,88,99,63,100和80分。
汇编语言实验报告

汇编语言实验报告
1. 实验简介
本次实验是针对汇编语言的学习和实践,在实验中,我们将学习如何使用汇编语言编写程序、调试程序,并通过一系列实例来练习和巩固所学知识。
2. 实验目的
(这一部分可以根据实际情况来写,列举实验的具体目的和要求)
3. 实验环境及工具
(介绍实验所使用的软件环境和工具,如:编译器、调试器)
4. 实验步骤
(根据实验内容具体描述实验步骤,可以分为多个小节)
4.1 准备工作
在开始实验之前,需要进行一些准备工作,包括安装编译器、创建工作环境等。
4.2 实验一:简单的汇编程序
本实验通过编写一个简单的汇编程序来熟悉汇编语言的基本语法和指令集,包括数据传送、算术运算、逻辑运算等。
4.3 实验二:汇编程序的调试
在实验二中,我们将学习如何使用调试器对汇编程序进行调试,包括设置断点、查看变量值、单步执行等操作。
4.4 实验三:汇编程序的优化
本实验将通过优化代码来提高程序的执行效率,包括减少指令的使用、优化循环结构等。
5. 实验结果与分析
(对实验的结果进行总结和分析,可以包括程序的输出结果、性能分析等)
6. 实验总结
(针对本次实验的收获和心得体会进行总结,可以包括对汇编语言的理解、解决问题的思路等)
7. 实验感想
(对本次实验的感想和建议,如实验过程中遇到的困难、改进的方向等)
8. 参考文献
(列出本报告中所引用的参考文献)
注:该文章只是按照题目提示给出了一个大致的框架和构思,实际根据具体的实验内容和要求来编写每个小节的详细内容。
希望对你有所帮助!。
汇编语言实验报告

汇编语言实验报告一、实验目的本次汇编语言实验的主要目的是通过实际操作和编程实践,深入理解汇编语言的基本概念、指令系统和编程方法,提高对计算机底层硬件操作的认识和编程能力。
二、实验环境1、操作系统:Windows 102、编程工具:MASM(Microsoft Macro Assembler)三、实验内容1、数据传送与算术运算实现两个 16 位整数的加法和减法运算,并将结果存储在指定的内存单元中。
使用不同的数据传送指令,如 MOV、PUSH、POP 等,将数据在寄存器和内存之间进行传输。
2、逻辑运算与移位操作对给定的 8 位二进制数据进行逻辑与、或、异或运算,并观察结果。
执行移位操作,包括逻辑移位(SHL、SHR)和算术移位(SAL、SAR),理解移位对数据的影响。
3、分支与循环结构使用条件跳转指令(如 JZ、JE、JC 等)实现根据不同条件执行不同代码段的功能。
编写循环结构程序,如使用 LOOP 指令实现对数组元素的求和操作。
4、子程序调用定义一个子程序,实现特定的功能,如计算一个数的阶乘。
在主程序中调用子程序,并传递参数和获取返回值。
四、实验步骤1、数据传送与算术运算实验首先,在代码编辑器中编写汇编代码,定义数据段和代码段。
在数据段中初始化两个 16 位整数,例如 MOV WORD PTR DATA1, 1000H 和 MOV WORD PTR DATA2, 2000H 。
在代码段中使用 ADD 和 SUB 指令进行加法和减法运算,如 ADD WORD PTR RESULT_ADD, DATA1 和 SUB WORD PTRRESULT_SUB, DATA2 。
编译和链接代码,生成可执行文件。
运行程序,查看内存中存储的运算结果。
2、逻辑运算与移位操作实验类似地,定义数据段和代码段。
在数据段中初始化 8 位二进制数据,如 MOV AL, 01010101B 。
在代码段中使用AND、OR、XOR 指令进行逻辑运算,以及SHL、SHR、SAL、SAR 指令进行移位操作。
汇编语言实验报告

汇编语言实验报告一、实验目的(1)熟悉汇编程序的汇编、连接、执行过程;(2)生成LST文件,查看LST文件;(3)生成OBJ文件,修改语法错误;(4)生成EXE文件;(5)执行程序。
二、实验涉及知识汇编程序从编写到执行的过程编程?.ASM?编译?.OBJ?连接?.EXE?加载?内存中的程序?执行1)编写源程序用EDIT或记事本输入各段,并存储成源程序(保存在MASM目录下),扩展名为ASM。
2)对源程序进行汇编、连接操作如下:(1)在DOS状态下,进入MASM目录;(2)输入命令:MASM 文件名(连同扩展名);(3)在系统出现的提示中输入:object filename[.obj]:按回车键。
Source listling[nul.lst]:输入:文件主名,生成lst文件,也可以不生成,直接按回车键。
Lst文件用于查看编译为目标文件的过程中产生的中间结果。
Cross-reference [nul.crf]:按回车键。
(4)如果系统没有提示出错,那么编译过程就完成了。
如果提示错误则应用edit打开源文件进行修改,然后再重复2和3步骤。
(5)输入:link 文件主名(不要输扩展名,也可以输入扩展名.obj)run file [.exe]:按回车键。
List file [nul.map]:按回车键。
Libraries [.lib]:按回车键。
(6)没有提示错误,汇编过程就结束了,产生了exe可执行文件。
如果出现‘no strack segment’的错误警告,不用理会。
3)执行程序(由DOS中的COMMAND命令将文件加载入内存)在DOS提示符下直接输入文件主名就可以执行文件了。
程序执行后,有的会显示结果,有的可能执行后什么结果都没有,是因为程序中没有显示命令。
三、实验内容1)将下面的数据段输入,取名1.ASM,保存在MASM文件夹下。
生成LST文件,(不必连接、运行)用EDIT查看1.LST文件。
汇编语言实验报告

实验报告一:汇编语言实验基础一.实验目的:1. 熟悉汇编语言程序的开发过程以及汇编语言常用软件的使用方法2. 掌握DEBUG常用命令的使用方法二、实验内容:1.DEBUG 命令使用2.8088常用指令练习三、实验步骤:(一)DEBUG 命令使用:1、打 DEBUG 进入 DEBUG 控制,显示提示符'_ '。
2、用命令 F 100 10F 'A' 将'A'的ASCII码填入内存。
3、用命令 D 100 10F 观察内存中的16进制码及屏幕右边的ASCII字符。
4、用命令 F 110 11F 41 重复上二项实验,观察结果并比较。
5、用命令 E 100 30 31 32 …… 3F将30H-3FH写入地址为100开始的内存单元中,再用D命令观察结果,看键入的16进制数是什么字符的ASCII码? 6、用H命令检查下列各组16进制数加减结果并和你的手算结果比较:(1)34H,22H (2)56H,78H (3)A5,79H (4)1284H,5678H(5)A758,347FH7、用R 命令检查各寄存器内容,特别注意AX,BX,CX,DX,IP及标志位中ZF,CF 和AF的内容。
8、用R命令将AX,BX内容改写为1050H及23A8H。
(二)8088常用指令练习1、传送指令1)用A命令在内存100H处键入下列内容:MOV AX,1234MOV BX,5678XCHG AX,BXMOV AH,35MOV AL,48MOV DX,75ABXCHG AX,DX2)用U命令检查键入的程序,特别注意左边的机器码。
3)用T命令逐条运行这些指令,注意有关寄存器及IP的变化情况。
并注意标志位有无变化。
2、加减法指令:1)用A命令在内存100H处键入下列内容:MOV AH,34MOV AL,22ADD AL,AHSUB AL,78MOV CX,1284MOV DX,5678ADD CX,DXSUB CX,AXSUB CX,CX2)用U命令检查键入的程序及对应的机器码。
汇编语言综合实验报告

汇编语言综合实验报告一、引言在计算机科学领域,汇编语言是一种低级别的编程语言,用来直接控制计算机硬件。
汇编语言编写的程序可以直接访问计算机的内存和寄存器,因此在一些特定领域,如嵌入式系统开发和操作系统内核编程中得到广泛应用。
本实验旨在通过编写汇编语言程序,加深对计算机底层工作原理的理解,并提升编程技能。
二、实验目的本实验旨在掌握使用汇编语言编写程序的基本方法和技巧,通过实践将理论知识转化为实际应用能力。
具体目标如下:1. 理解汇编语言的基本结构和语法;2. 掌握寄存器的使用方法和常见指令的含义;3. 实现特定功能的汇编语言程序,并验证其正确性。
三、实验内容本次实验共包含三个实际问题,分别是:求两个整数的和、判断一个数是否为素数以及计算斐波那契数列中的第n项。
下面将分别介绍每个问题的解决方法和实现步骤。
1. 求两个整数的和要求编写一段汇编语言程序,输入两个整数,输出它们的和。
程序的具体实现步骤如下:(1)将第一个整数存入寄存器A;(2)将第二个整数存入寄存器B;(3)将寄存器A和寄存器B的值相加,结果存入寄存器C;(4)将寄存器C的值输出,作为程序的结果。
2. 判断一个数是否为素数要求编写一段汇编语言程序,输入一个整数,判断它是否为素数,并输出结果。
程序的具体实现步骤如下:(1)将待判断的整数存入寄存器A;(2)用2到sqrt(A)之间的所有整数去除A,如果能整除则判定为非素数,跳转到步骤(4);(3)将寄存器A的值输出,作为结果,并结束程序;(4)将“非素数”输出,作为结果,并结束程序。
3. 计算斐波那契数列中的第n项要求编写一段汇编语言程序,输入一个正整数n,计算斐波那契数列中的第n项,并输出结果。
程序的具体实现步骤如下:(1)将n存入寄存器A;(2)将寄存器A的值减1得到n-1,并将其存入寄存器B;(3)将寄存器A的值减2得到n-2,并将其存入寄存器C;(4)计算n-1和n-2这两个值对应的斐波那契数列项的值,分别存入寄存器D和寄存器E;(5)将寄存器D和寄存器E的值相加,结果存入寄存器F,并将寄存器F的值输出,作为程序的结果。
汇编语言实验报告

汇编语言实验报告实验二:汇编语言一、实验代码及结果:3.2 若1KB的数据存放在TABLE以下,试编程序将该数据块搬到NEXT为首地址的内存区域中。
代码:DATA SEGMENT:TABLE DB 10 DUP (32H)NEXT DB 10 DUP (89H)COUNT DB 10HDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX, DATAMOV DS,AXMOV SI,OFFSET TABLEMOV DI,OFFSET NEXTAGAIN:MOV AX,[SI]MOV [DI],AXINC SIINC DIDEC COUNTLOOP AGAINMOV AH,4CHINT 21HCODE ENDSEND START结果:3.3试编写10个字(16位2进制数)之和的程序。
代码:DATA SEGMENTADD1 DB 1HADD2 DB 2H,3H,4H,5H,6H,7H,8H,9H,0AH SUM DB (?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX, DATAMOV DS,AXMOV SI,OFFSET ADD1MOV DI,OFFSET ADD2MOV BX,OFFSET SUMMOV CX,9HMOV AL,[SI]MOV AH,0HPLUS1:ADC AL,[DI]INC DILOOP PLUS1MOV BX,AXMOV AH,4CHINT 21HCODE ENDS END START 结果:3.7试编写程序将MOLT中的一个8位2进制数乘以20,乘积放在ANS单元及其下一单元中。
代码:DATA SEGMENTMOLT DB 0AAHMOLT1 DB 0AAHANS DB (?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX, DATAMOV DS,AXMOV SI,OFFSET MOLTMOV DI,OFFSET MOLT1MOV BX,OFFSET ANSMOV CX,14HMOV AX,SIPLUS1:ADC AX,[DI]LOOP PLUS1MOV BX,AXMOV AH,4CHINT 21HCODE ENDS END START 结果:二、实验感想:虽说对汇编语言的学习时间比较少、掌握和理解程度比较浅,但是通过一周多的学习和对汇编语言的上机操作能够很好的明白汇编语言程序的编写、运行和调试的方法,以及对汇编语言的实验代码和基本程序的组成有了大致的了解,为以后学习相关的知识打下了一个很好的基础。
汇编语言程序设计实验报告

汇编语言程序设计实验报告汇编语言程序设计实验报告引言:汇编语言是一种底层的计算机语言,通过直接操作计算机的硬件和寄存器来实现程序的功能。
在本次实验中,我们学习了汇编语言的基本语法和编程技巧,并通过实践编写了一些简单的程序。
本报告将对实验过程和结果进行总结和分析。
一、实验目的本次实验的主要目的是让我们掌握汇编语言的基本语法和操作方式,培养我们对计算机底层运行机制的理解能力。
通过编写汇编程序,我们可以更深入地了解计算机的运行原理,并且可以更加高效地编写一些底层程序。
二、实验环境本次实验使用的是Windows操作系统,并且我们使用了MASM汇编器来编译和运行我们的汇编程序。
MASM是一款经典的汇编语言开发工具,具有强大的功能和广泛的应用领域。
三、实验内容在本次实验中,我们完成了以下几个任务:1. 编写一个简单的汇编程序,实现两个数字的相加功能。
2. 编写一个汇编程序,实现对一个字符串进行反转。
3. 编写一个汇编程序,实现对一个数组进行排序。
四、实验步骤1. 首先,我们学习了汇编语言的基本语法和指令集。
了解了汇编语言中的寄存器、指令和内存等概念,并且学会了如何使用它们来编写程序。
2. 接着,我们开始编写第一个程序,实现两个数字的相加功能。
通过学习汇编语言中的加法指令,我们可以将两个数字加载到寄存器中,并且使用相应的指令进行相加操作。
3. 然后,我们编写了第二个程序,实现对一个字符串进行反转。
通过学习汇编语言中的循环和条件判断指令,我们可以逐个字符地读取字符串,并且将它们按照相反的顺序存储到新的内存空间中。
4. 最后,我们编写了第三个程序,实现对一个数组进行排序。
通过学习汇编语言中的比较和交换指令,我们可以对数组中的元素进行排序,并且将排序结果存储到新的内存空间中。
五、实验结果通过以上的实验步骤,我们成功地完成了编写汇编程序的任务,并且得到了正确的结果。
我们的程序可以实现两个数字的相加、字符串的反转和数组的排序功能,并且运行速度较快,效果较好。
汇编语言实验报告

汇编语言实验报告引言:汇编语言作为低级语言之一,在计算机科学领域具有重要的地位。
本篇文章将围绕汇编语言的实验进行讨论,重点探索汇编语言在计算机编程中的应用和优势。
通过实际的实验过程,我们能够更加深入地认识汇编语言的特点和使用方法。
本报告将从实验的准备工作、实验的步骤、实验结果以及实验心得等方面进行论述。
实验准备:在开始实验之前,准备工作是非常重要的。
首先,我们需要下载安装合适的汇编语言开发环境,比如MASM或者NASM。
接着,我们需要理解汇编语言的基本知识,包括寄存器、内存和指令等的概念。
此外,我们还需要掌握一些基本的汇编语言指令,比如MOV、ADD、SUB等。
这些准备工作对于我们能够顺利进行实验具有关键性的作用。
实验步骤:在实验过程中,我们经历了一系列的步骤,下面将一一进行介绍。
1. 确定实验目标:在进行实验之前,我们需要明确实验的目标和要达到的结果。
比如,我们可以选择实现一个简单的计算器程序,能够实现基本的加减乘除运算。
这样的目标可以帮助我们更好地理解汇编语言的使用方法和语法规则。
2. 编写代码:在明确了实验目标之后,我们开始编写汇编语言代码。
首先,我们需要定义一些变量和常量,以便在程序中使用。
然后,我们根据实验目标,逐步编写实现相应功能的代码段。
在这个过程中,我们需要注意汇编语言的特点,比如大小写敏感、指令的书写格式等。
3. 调试程序:编写完代码后,我们需要对程序进行调试,以确保其功能的正确性。
在调试过程中,我们会使用一些调试工具,比如调试器,帮助我们找出代码中的错误并进行修复。
通过调试,我们能够提高代码的质量和效率。
4. 运行程序:在完成调试之后,我们开始运行程序,观察程序的运行结果。
通过不断运行和测试,我们可以检验程序的正确性和可靠性。
如果程序能够输出我们预期的结果,那么说明我们的实验成功了。
实验结果:在我们进行实验的过程中,我们获得了一些令人满意的结果。
通过编写汇编语言代码,我们成功实现了一个简单的计算器程序。
汇编语言实验报告

汇编语言实验报告一、实验目的本次汇编语言实验的主要目的是通过实际编程和调试,深入理解汇编语言的基本语法、指令系统和程序设计方法,提高对计算机底层工作原理的认识和编程能力。
二、实验环境1、操作系统:Windows 102、编程工具:MASM 615 集成开发环境三、实验内容1、简单算术运算程序设计一个程序,实现两个 16 位无符号整数的加法运算,并将结果输出显示。
分析程序的执行过程,理解加法指令和数据存储方式。
2、数据排序程序编写一个程序,对给定的一组 8 位无符号整数进行冒泡排序。
观察排序过程中数据的交换和移动,掌握循环和比较指令的应用。
3、字符串处理程序设计一个程序,实现字符串的复制、比较和查找操作。
熟悉字符串操作指令和内存访问方式。
四、实验步骤1、简单算术运算程序定义数据段,存储两个待相加的整数。
在代码段中,使用加法指令 ADD 进行运算,并将结果存储在指定的内存单元。
通过输出指令将结果显示在屏幕上。
2、数据排序程序定义数据段,初始化待排序的整数数组。
在代码段中,使用两层循环实现冒泡排序算法。
比较相邻的两个元素,如果顺序错误则进行交换。
输出排序后的数组。
3、字符串处理程序定义数据段,分别存储源字符串和目标字符串。
使用字符串复制指令 MOVS 实现字符串的复制。
利用比较指令 CMPS 进行字符串的比较。
通过扫描指令 SCAS 查找指定的字符。
五、实验结果与分析1、简单算术运算程序输入两个整数,如 100 和 200,程序输出结果为 300,运算正确。
通过调试工具观察寄存器和内存的变化,进一步理解了加法运算的实现过程。
2、数据排序程序对于给定的数组5, 3, 1, 8, 2,排序后输出为1, 2, 3, 5, 8,排序结果符合预期。
分析循环次数和数据交换的位置,加深了对冒泡排序算法的理解。
3、字符串处理程序字符串复制操作成功,源字符串被准确地复制到目标字符串中。
字符串比较结果正确,能够准确判断两个字符串的相等与否。
汇编语言综合程序实验报告

MOV AH,4CH
INT 21H
CSEG ENDS
END MAIN
2)运行程序。
3)检查结果无错误后将结果记录下来。
2.试编制一程序。从键盘输入一个字符,若为“1”,则显示“THE FIRST SUBROUTINE!”;否则显示“INPUT RIGHT CHARACTER”,返回DOS。
JMP PMZN1
PMZN1: INC SI+2
LOOP PMZN0
MOV PCOUNT,AX
MOV MCOUNT,BX
MOV ZCOUNT,DX
MOV AH,4CH
INT 21H
CSEG ENDS
END START
2)运行程序。
3)检查结果无错误后将结果记录下来。
四、实验结果
1.自内存DATA单元开始存放若干个无符号字节数,数据个数在COUNT单元存放。编制程序分别计算其中奇数,偶数的和,并分别存入ODDSUM,EVENSM单元。设各类和不超过16位二进制数,可用一个字表示或存放。程序运行结果如下界面所示:
东北大学
计算机硬件技术基础实验报告
专业班级:
姓名:
学号:
20092100
实验题目:
综合程序设计
日期:
2011年12月12日
一、实验内容
1.自内存DATA单元开始存放若干个无符号字节数,数据个数在COUNT单元存放。编制程序分别计算其中奇数,偶数的和,并分别存入ODDSUM,EVENSM单元。设各类和不超过16位二进制数,可用一个字表示或存放。
INC DL
LOOP L0
MOV AH,4CH
INT 21H
CODE ENDS
汇编语言编程实验报告

汇编语言编程实验报告汇编语言程序设计实验报告(一)汇编语言程序设计实验报告(一)一、预备知识汇编语言程序设计是一门实践性很强的课程。
编写程序、上机调试、运行程序是进一步学习和掌握汇编语言程序设计的必要手段。
二、实验目的1、掌握实验运行汇编语言所用的计算机机型2、熟悉常用编辑程序(行编辑程序EDLIN、全屏幕编辑程序QE及其它用于文件编辑的应用程序。
)3、掌握汇编程序ASM、宏汇编程序MASM1.0以上。
4、LINK连接程序5、DEBUG调试程序三、汇编语言源程序上机操作过程2、编辑源文件根据给定的任务,可编写程序。
如果经过检查认为所编程序无错时,就可在计算机上通过编辑程序建立源程序文件了。
一般在编辑过程中总会有错误产生,因此还要进行人工检查、修改以致重新编辑,直到所编辑的源程序无误为止,然后以一个源程序文件(ASM文件)存盘。
将包含QE文件的工作磁盘插入驱动器A:。
进入QEA\QE进入全屏幕后可以开始编程。
文件名取为Myprog。
asm;Ddisplystring (09H)CODESEGMENTPUBLICASSUME CS:CODE,DS:CODEORG 100HSTART:JMP BEGINMSG DB‘Hi ! This ia a dollar sign terminated string.’,’$’BEGIN:MOV AX,CS ;set up to display messageMOV DS,AXMOV DX,OFFSET,SG ;set up to display messageMOV AH,09H;display string function requestINT 21H ;call DOSMOV AH ,4CH ;terminate propram funct requestINT 21H ;Call DOSCODE ENDS;end of code segmentEND START;strat is the entry point输入完毕后,按ALT---X,存盘返回DOS3、汇编源程序文件(ASM,MASM)由编辑程序所建立的ASM文件只是个文本文件,计算机无法执行。
汇编 实验报告

汇编实验报告汇编实验报告引言:汇编语言是一种低级语言,用于编写计算机程序。
在计算机科学领域中,汇编语言是一门重要的学科,它可以帮助我们更深入地了解计算机的内部工作原理。
本实验报告将介绍我在学习汇编语言过程中的实验经历和所学到的知识。
实验一:汇编语言的基本概念在本实验中,我首先学习了汇编语言的基本概念。
汇编语言是一种用于编写机器指令的低级语言,它直接操作计算机的硬件。
通过学习汇编语言,我了解了计算机内存、寄存器、指令和数据的存储方式,并学会了如何编写简单的汇编程序。
实验二:汇编语言的数据表示在这个实验中,我学习了汇编语言中的数据表示方法。
汇编语言中的数据可以用不同的方式表示,例如二进制、十进制和十六进制。
我还学习了如何使用数据寄存器和内存寻址来处理不同类型的数据。
实验三:汇编语言的指令集在本实验中,我学习了汇编语言的指令集。
汇编语言中的指令可以分为数据传送指令、算术运算指令、逻辑运算指令和控制指令等多种类型。
通过学习不同类型的指令,我可以编写更加复杂和功能强大的汇编程序。
实验四:汇编语言的程序设计在这个实验中,我学习了如何使用汇编语言进行程序设计。
通过学习汇编语言的程序设计技巧,我可以编写出高效、精确和可靠的程序。
我还学习了如何使用子程序、循环和条件语句等控制结构来实现不同的功能。
实验五:汇编语言的调试和优化在本实验中,我学习了如何调试和优化汇编语言程序。
调试是指在程序运行过程中发现并修复错误的过程,而优化则是指对程序进行性能提升的过程。
通过学习调试和优化技巧,我可以提高程序的效率和可靠性。
结论:通过这些实验,我对汇编语言有了更深入的了解。
汇编语言虽然复杂,但它可以帮助我们更好地理解计算机的内部工作原理,并且可以编写出高效、精确和可靠的程序。
通过学习汇编语言,我不仅提升了自己的编程能力,还对计算机科学有了更全面的认识。
我相信,在今后的学习和工作中,汇编语言将会发挥重要的作用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
合肥工业大学计算机与信息学院实验报告课程:汇编语言程序设计专业班级:信息安全11-1学号:**************实验一Debug程序的使用一.实验目的1、熟悉DEBUG程序中的命令,学会在DEBUG下调试运行汇编语言源程序。
2、掌握8086/8088的寻址方式及多字节数据的处理方法。
二.实验内容1、利用DEBUG程序中的“E”命令,将两个多字节数“003F1AE7H”和“006BE5C4H”分别送入起始地址为DS:0200H和DS:0204H两个单元中。
2、分别用直接寻址方式和寄存器间接寻址方式编写程序段,实现将DS:0200H 单元和DS:0204H单元中的数据相加,并将运算结果存放在DS:0208H单元中。
要求:本次实验的内容均在DEBUG下完成,实现数据的装入、修改、显示;汇编语言程序段的编辑、汇编和反汇编;程序的运行和结果检查。
三.实验过程和程序1、启动DOS操作系统2、运行程序(若当前盘为C)C:>DEBUG↙– ;(“–”为DEBUG提示符,仅当屏幕出现该提示符后,才可输入DEBUG命令)3、用“A”命令编辑和汇编源程序–A ↙186E:0100 MOV AX,[0200]↙186E:0103 MOV BX,[0202]↙186E:0107 ADD AX,[0204]↙186E:010B ADC BX,[0206]↙186E:010F MOV [0208],AX↙186E:0112 MOV [020A],BX↙186E:0116 ↙4、用“U”命令反汇编验证源程序–U CS:0100↙186E:0100 A10002 MOV AX,[0200]186E:0103 8B1E0202 MOV BX,[0202]186E:0107 03060402 ADD AX,[0204]186E:010B 131E0602 ADC BX,[0206]186E:010F A30802 MOV [0208],AX186E:0112 891E0A02 MOV [020A],BX186E:0116–注意:●检查源程序是否有错误,若有则返回到第3步用“A 地址”命令进行修改,直到程序无错误。
●DEBUG约定在其命令或源程序中所涉及到的数据均被看作十六进制数,其后不用“H”说明。
●在DEBUG下,源程序中不能使用“标号”、“变量”和一些伪指令。
●在DEBUG下,大小写不敏感。
5、程序未执行前,用“R”命令观察,相关寄存器的内容。
–R↙如:(AX)= 0000 ,(BX)= 0000 ,(SI)= 0000 ,(DI)= 0000 ,(CS)= 1376 ,(IP)= 0100 。
6、在程序未执行前,用“D”命令观察DS:0200H,DS:0204H、DS:0208H单元的内容–D 200 20B ↙7、用“G”命令运行源程序–G =100 0116 ↙8、再用“D”命令观察DS:0200H~DS:020BH字节单元中的内容–D 200 20B↙9、用“T”单步操作命令对源程序单步执行,观察AX、BX、CS、IP寄存器内容的变化,并与预计的结果相比较。
注意:●D命令显示内存数据,注意观察多字节数据在内存中的存放方式。
●指令执行的时候,IP寄存器随着变化,注意观察。
四.实验结果(包括必要的截图)利用寄存器的方法:五.实验体会能使用debug在dos界面下编译代码。
能熟练使用各种debug命令,例如-u、-g、-d、-r等命令。
熟练掌握8086/8088的寻址方式及多字节数据的处理方法实验二汇编语言程序设计(顺序、循环)一.实验目的1、掌握顺序和循环程序结构和设计方法;2、熟悉在PC机上建立、汇编、连接、调试和运行8086/8088汇编语言程序的过程。
二.实验内容1、X、Y、Z、V均为字变量,在X、Y、Z、V字单元中存放是16位带符号数。
试编写汇编语言程序完成以下功能:①计算表达式值(V–(X*Y+Z-720))/X;②将上述表达式运算结果整数放在SUM1单元,余数放在SUM2单元。
2、求一个班50名学生成绩的平均值(附加题:最大值和最小值,并将结果显示出来)3、从键盘读入一个字符串,以Enter结束,字符串不超过50个字符,并打印该字符串(附加题:查找中间是否有‘asm’子串。
如果有,输出‘Yes’;否则,输出‘No’)。
三.实验过程和程序1、计算表达式并存入内存Stack segmentdw 512 dup(?)Stack endsData segmentx dw 100y dw 100z dw 100v dw 100sum1 dw ?sum2 dw ?Data endsCode segmentassume cs:code, ds:data, ss:stackstart:mov ax,datamov ds,axmov ax,x;在代码段填入指令序列mov bx,yimul bxadd ax,zadc dx,0sub ax,720sbb dx,0mov cx,dxmov bx,axmov ax,vcwdsub ax,bxsbb dx,cxmov bx,xidiv bxmov sum1,axmov sum2,dxmov ah,4chint 21hCode endsend start2、求出平均值、最大值、最小值Stack segmentdw 512 dup(?)Stack endsData segmentstu db 25 dup(35,37)s1 db 'the max is:$'s2 db 'the min is:$'s3 db 'the avg is:$'display db 5 dup('$')Data endsCode segmentassume cs:code, ds:data, ss:stack start:mov ax,datamov ds,ax; 在代码段填入指令序列mov al,0mov si,0mov cl,50mov bh,0; maxmov bl,100; minagain: add al,stu[si]adc ah,0cmp bh,stu[si]ja L1mov bh,stu[si]L1: cmp bl,stu[si]jb L2mov bl,stu[si]L2: inc siloop againmov cl,50div cl; avg在al中mov cl,ah; 保存ahlea dx,s3mov ah,09hint 21hmov ah,clcall DISPlea dx,s2; 最小值输出mov ah,09hint 21hmov al,blcall DISPmov ah,02h; 输出回车换行mov dl,0ahint 21hmov ah,0dhint 21hlea dx,s1; 最大值输出mov ah,09hint 21hmov al,bhcall DISPmov ah,4chint 21hDISP procpush bxcmp al,100jz mfcmp al,10jb gwmov ah,0mov bl,10div bladd al,30hmov display[0],aladd ah,30hmov display[1],ahdone: lea dx,displaymov ah,09hint 21hmov ah,02h; 输出回车换行mov dl,0ahint 21hmov ah,0dhint 21hpop bxretmf: mov display[0],31hmov display[1],30hmov display[2],30hjmp donegw: add ah,30hmov display[0],ahjmp doneDISP ENDPCode endsend start3、读入字符串Code segmentassume cs:code, ds:data start:mov ax,datamov ds,axmov ah,0ahlea dx,x+2int 21hmov ah,02h; 输出回车换行mov dl,0ahint 21hmov ah,0dhint 21hmov dx,offset x+2mov ah,09hint 21hlea si,xlea di,ymov bx,dimov ah,48again: mov cx,3repz cmpsbjz foundinc simov di,bxdec ahjnz againmov ah,02h; 输出回车换行mov dl,0ahint 21hmov ah,0dhint 21hlea dx,s2jmp donefound: lea dx,s1done: mov ah,09hint 21hmov ah,4chint 21hCode endsend start四.实验结果(包括必要的截图)2.12.2 2.3五.实验体会通过此次试验,我掌握顺序和循环程序结构和设计方法,能在PC上对循环结构和顺序结构进行编程。
熟悉在PC机上建立、汇编、连接、调试和运行8086/8088汇编语言程序的过程。
实验三汇编语言子程序设计(分支、子程序)一.实验目的1、掌握分支和子程序结构和设计方法;2、熟悉在PC机上建立、汇编、连接、调试和运行8086/8088汇编语言程序的过程。
3、通过汇编语言了解高级语言的参数传递等知识。
二.实验内容1、1. BL中的只有一位为1。
编写程序测试,并输出提示信息“The X Bit is 1”,要求:地址表和转移表。
2. 编写一个子程序计算z=f(x,y)=x*y+x-y(x,y,z有符号数内存数)。
要求通过堆栈(寄存器、内存)传送所有参数。
三.实验过程和程序1、1. BL中的只有一位为1。
编写程序测试,并输出提示信息“The X Bit is 1”,要求:地址表和转移表。
;地址表法Data segmentS1 DB 'The 1 Bit is 1$'S2 DB 'The 2 Bit is 1$'S3 DB 'The 3 Bit is 1$'S4 DB 'The 4 Bit is 1$'S5 DB 'The 5 Bit is 1$'S6 DB 'The 6 Bit is 1$'S7 DB 'The 7 Bit is 1$'S8 DB 'The 8 Bit is 1$'addrtb dw L0,L1,L2,L3,L4,L5,L6,L7Data endsCode segmentassume cs:code, ds:data start:mov ax,datamov ds,axmov bl,02hmov al,0ffhagain: inc alshr bl,1jnc againshl al,1; al乘以2mov bl,almov bh,0 jmp addrtb[bx]mov ah,4chint 21hL0: lea dx,S1jmp outputL1: lea dx,S2jmp outputL2: lea dx,S3jmp outputL3: lea dx,S4jmp outputL4: lea dx,S5jmp outputL5: lea dx,S6jmp outputL6: lea dx,S7jmp outputL7: lea dx,S8jmp outputoutput: mov ah,09hint 21hmov ah,4chint 21hCode endsend start;转移表法Data segmentS1 DB 'The 1 Bit is 1$'S2 DB 'The 2 Bit is 1$'S3 DB 'The 3 Bit is 1$'S4 DB 'The 4 Bit is 1$'S5 DB 'The 5 Bit is 1$'S6 DB 'The 6 Bit is 1$'S7 DB 'The 7 Bit is 1$'S8 DB 'The 8 Bit is 1$'Data endsCode segmentassume cs:code, ds:data start:mov ax,datamov ds,axmov bl,02hmov al,-1again: inc alshr bl,1jnc againmov ah,0mov cx,axshl ax,1add ax,cx; al乘以3lea si,jmptbadd si,axjmp sijmptb:jmp L0jmp L1jmp L2jmp L3jmp L4jmp L5jmp L6jmp L7org $+80hL0: lea dx,S1jmp outputL1: lea dx,S2jmp outputL2: lea dx,S3jmp outputL3: lea dx,S4jmp outputL4: lea dx,S5jmp outputL5: lea dx,S6jmp outputL6: lea dx,S7jmp outputL7: lea dx,S8jmp outputoutput: mov ah,09hint 21hmov ah,4chint 21hCode endsend start2. 编写一个子程序计算z=f(x,y)=x*y+x-y(x,y,z有符号数内存数)。