汇编语言实验报告 20112914讲解

合集下载

《汇编语言》实验报告

《汇编语言》实验报告

《汇编语言》实验报告实验名称:汇编语言实验报告实验目的:通过实验了解汇编语言的基本概念、语法结构和程序设计方法,掌握汇编语言的编写方法。

实验时间:2024年1月1日实验地点:实验室一、实验背景汇编语言是计算机硬件和软件之间的桥梁,通过汇编语言可以直接操作计算机的底层硬件。

汇编语言是一种低级语言,使用汇编语言可以实现对计算机内存、寄存器等硬件资源的直接操作,从而实现程序的功能。

本实验通过编写汇编语言程序,加深对汇编语言的理解。

二、实验过程1. 确定实验环境:使用DOSBox模拟DOS环境进行汇编程序编写和调试。

2. 编写第一个汇编程序:编写一个简单的汇编程序,将字符串“Hello, World!”输出到屏幕上。

3.程序分析:a.定义要输出的字符串,将字符串存储在数据段中。

b.设置段寄存器,将数据段地址加载到DS寄存器中。

c.设置显示模式和光标位置。

d.将字符串逐个字符输出到屏幕上。

e.关闭显示模式。

4. 编译运行:使用汇编语言的编译器将汇编程序转换成机器码,并在DOSBox中运行程序。

5.调试程序:根据程序运行结果和分析,调试程序中存在的错误,并进行改正。

三、实验结果与分析经过多次编写和调试,我们成功实现了将字符串“Hello, World!”输出到屏幕上的功能。

通过程序分析和调试过程,加深了对汇编语言的理解和掌握。

四、实验总结通过本次实验,我们深入了解了汇编语言的基本概念、语法结构和程序设计方法。

通过实际编写汇编语言程序,对汇编语言的编写方法有了更加深入的认识。

同时,通过调试程序的过程,我们也提高了自身的问题解决能力和分析能力。

在今后的学习和工作中,我们将继续学习和深入研究汇编语言,提高自己的编程能力和创新思维能力。

总体而言,本次实验给我们带来了很大的收获,我们以后将更加努力地学习汇编语言,提高自己的编程水平,为以后的学习和工作做好充分的准备。

汇编实验报告讲解

汇编实验报告讲解

汇编实验报告姓名:班级:学号:实验指导教师:陆勤实验一:汇编运行环境及方法、简单程序设计——比较两个字符串string1和string2所含的字符是否相同。

若相同则显示‘Match’,否则显示‘Nomatch’。

一.实验目的1.熟悉汇编语言运行环境和方法2.了解如何使用汇编语言编制程序3.熟悉debug有关命令的使用方法4.利用debug掌握有关指令的功能。

5.利用debug运行简单的程序段。

二.实验内容1.学会输入、编辑汇编语言程序。

2.学会对汇编语言程序进行汇编、连接和运行。

3.进入和退出debug程序。

4.学会debug中的D命令、E命令、R命令、T命令、A命令、G命令等的使用。

对于U命令、N命令、W命令等,也应试一下。

三:实验要求:绘制程序流程图开始输入两个字符串string1和string2比较是否相同相同返回match 不相同返回no match结束四:实验步骤步骤1:可以用汇编程序edit在磁盘上建立如下源程序ex.asm步骤2:源程序建立后,用汇编程序masm对汇编程序ex.asm进行汇编,汇编正确后产生二进制目标文件ex.obj步骤3:汇编程序已产生出二进制的目标文件,但obj文件不是可执行文件还必须使用连接程序(link)将obj文件转化为可执行的exe文件。

步骤4:在建立了exe文件后,就可以直接从dos执行程序。

另一种调试程序的方法是使用debug程序,调用如下:C:\Users\yumin>debug EX.EXE此时,debug已将执行程序装入内存,可直接用g命令运行程序-g五:实验代码DSEG SEGMENTSTRING1 DB ‘move the cursor backward’STRING2 DB ‘move The cursor backward’MESS1 DB ‘Match!’,0dh,0ah,’$’MESS2 DB ‘No Match!’,13,10,’$’DSEG ENDSCSEG SEGMENTMAIN PROC FARASSUME CS:CSEG,DS:DSEG,ES:DSEGSTART:PUSH DSSUB AX,AXPUSH AXMOV AX,DSEGMOV DS,AXMOV ES,AXLEA SI,STRING1 LEA DI,STRING2 CLDMOV CX,24REPZ CMPSBJZ MATCHLEA DX,MESS2 JMP SHORT DISP MATCH:LEA DX,MESS1 DISP:MOV AH,9INT 21HRETMAIN ENDPCSEG ENDSEND START实验二:用DEBUG编程:使用堆栈段将AX和BX的内容进行交换——设堆栈指针SP=2000H,AX=3000H,BX=5000H;编一程序段将AX和BX的内容进行交换。

《汇编语言程序设计》实验报告

《汇编语言程序设计》实验报告

《汇编语言程序设计》实验报告班级:090342B学号:*********姓名:***指导教师:***实验日期:实验一实验题目Debug基本命令使用完成日期2011,3,29实验二实验题目汇编语言程序的上机过程完成日期2011,4,16实验三实验题目顺序程序设计完成日期2011,4,19实验四实验题目分支程序设计完成日期2011,4,28START:MOV AX,DATAMOV DS,AXMOV BX,BUFMOV CL,0COPA: AND BX,BXJE EXITSHL BX,1JNC COPAINC CLJMP COPAEXIT: MOV COUNT,CLMOV AH,4CHINT 21HCODE ENDSEND START四、实验结果(可以抓图粘贴)1.两数均为奇数时两数均为偶数时两数一奇一偶时2.3.4.五、本次上机的体会或收获在分支程序的编写过程中,最重要的是判断指令的选择和各部分程序段的逻辑顺序,其次是各种指令以及寻址方式的熟练运用。

这次实验反应出的问题有程序分支后不能汇合到应在的点,主要是因为考虑不周;还有由于自己的不经意,写错指令导致程序不能正常运行;此外,本次上机还让我体会到了程序验证的重要性,比如第一个程序的调试,由于没有调试所有可能出现的情况,导致在我誊写报告的时候出现了错误结果,后经改正才使得程序准确运行。

实验五实验题目循环程序设计完成日期2011,5,3end start四、实验结果(可以抓图粘贴)1.2.3.(1)字符串相等(2)字符串不相等4.5.六、本次上机的体会或收获通过本次实验,基本掌握了串操作指令的使用方法,同时对循环程序的多种设计有了进一步的了解和掌握。

在循环程序设计中,最重要的是对循环次数和循环终止条件的设置,只有二者得以正确设置,程序才能正确运行。

除此,程序书写时一定要注意固定部分的书写,确保固定语句的搭配无误。

实验六实验题目DOS中断调用程序设计完成日期2011,5,13四、实验结果(可以抓图粘贴)1.2.3.五、本次上机的体会或收获本次实验主要是对1号、2号、9号DOS功能的调用,通过实验加深了对中断功能调用的理解,但对于各功能连用时的操作还存在疑惑,尤其是该实验的第二题,程序的输出结果总会带有一些不相关的字符串。

大学课程汇编语言的实验报告

大学课程汇编语言的实验报告

实验报告实验课程:学生姓名:学号:专业班级:电气信息类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。

汇编语言实验报告 20112914

汇编语言实验报告 20112914

合肥工业大学计算机与信息学院实验报告课程:汇编语言程序设计专业班级:信息安全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 地址”命令进行修改,直到程序无错误。

汇编语言程序设计实验报告

汇编语言程序设计实验报告

汇编语言程序设计实验报告汇编语言程序设计实验报告引言汇编语言是一种低级语言,用于编写计算机的底层程序。

在计算机科学与技术领域,汇编语言程序设计是一门重要的课程。

本篇实验报告将介绍我在汇编语言程序设计实验中所学到的知识和经验。

实验目的本次实验的目的是通过编写汇编语言程序,加深对计算机底层原理的理解,并掌握汇编语言的基本语法和编程技巧。

实验环境在实验中,我使用了一台运行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命令检查键入的程序及对应的机器码。

汇编语言实验报告

汇编语言实验报告

汇编语⾔实验报告汇编语⾔实验报告专业:班级:姓名:学号: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 地址数据表;从指定的地址开始⽤数据表给定的数据修改存储单元。

汇编语言编程实验报告

汇编语言编程实验报告

汇编语言编程实验报告实验目的:使用汇编语言编写程序,实现特定功能。

实验过程和结果:1. 程序设计在本次实验中,我们使用汇编语言编写程序,实现了一个简单的计算器功能。

以下是我们设计的程序伪代码:```data segment; 定义数据段operand1 db ?operand2 db ?operator db ?result db ?data endscode segmentassume cs:code, ds:datastart:; 程序入口mov ax, datamov ds, ax; 获取用户输入mov ah, 01hint 21hmov operator, almov ah, 01hint 21hmov operand1, almov ah, 01hint 21hmov operand2, al; 根据运算符进行计算 cmp operator, '+'je addcmp operator, '-'je subcmp operator, '*'je mulje div; 显示结果mov dl, resultadd dl, 30h ; 转换为ASCII码 mov ah, 02hint 21h; 程序结束mov ah, 4chint 21hadd:; 加法运算mov al, operand1add al, operand2mov result, aljmp displaysub:; 减法运算mov al, operand1mov result, aljmp displaymul:; 乘法运算mov al, operand1mul operand2mov result, aljmp displaydiv:; 除法运算mov al, operand1mov ah, 0 ; 清空余数 div operand2mov result, aljmp display display:; 显示计算结果mov dl, resultadd dl, 30h ; 转换为ASCII码mov ah, 02hint 21h; 程序结束mov ah, 4chint 21hcode endsend start```2. 实验结果运行程序后,我们通过键盘输入运算符和操作数,程序能够正确地进行相应的运算并显示结果。

汇编语言实验报告

汇编语言实验报告

汇编语言实验报告引言:汇编语言作为低级语言之一,在计算机科学领域具有重要的地位。

本篇文章将围绕汇编语言的实验进行讨论,重点探索汇编语言在计算机编程中的应用和优势。

通过实际的实验过程,我们能够更加深入地认识汇编语言的特点和使用方法。

本报告将从实验的准备工作、实验的步骤、实验结果以及实验心得等方面进行论述。

实验准备:在开始实验之前,准备工作是非常重要的。

首先,我们需要下载安装合适的汇编语言开发环境,比如MASM或者NASM。

接着,我们需要理解汇编语言的基本知识,包括寄存器、内存和指令等的概念。

此外,我们还需要掌握一些基本的汇编语言指令,比如MOV、ADD、SUB等。

这些准备工作对于我们能够顺利进行实验具有关键性的作用。

实验步骤:在实验过程中,我们经历了一系列的步骤,下面将一一进行介绍。

1. 确定实验目标:在进行实验之前,我们需要明确实验的目标和要达到的结果。

比如,我们可以选择实现一个简单的计算器程序,能够实现基本的加减乘除运算。

这样的目标可以帮助我们更好地理解汇编语言的使用方法和语法规则。

2. 编写代码:在明确了实验目标之后,我们开始编写汇编语言代码。

首先,我们需要定义一些变量和常量,以便在程序中使用。

然后,我们根据实验目标,逐步编写实现相应功能的代码段。

在这个过程中,我们需要注意汇编语言的特点,比如大小写敏感、指令的书写格式等。

3. 调试程序:编写完代码后,我们需要对程序进行调试,以确保其功能的正确性。

在调试过程中,我们会使用一些调试工具,比如调试器,帮助我们找出代码中的错误并进行修复。

通过调试,我们能够提高代码的质量和效率。

4. 运行程序:在完成调试之后,我们开始运行程序,观察程序的运行结果。

通过不断运行和测试,我们可以检验程序的正确性和可靠性。

如果程序能够输出我们预期的结果,那么说明我们的实验成功了。

实验结果:在我们进行实验的过程中,我们获得了一些令人满意的结果。

通过编写汇编语言代码,我们成功实现了一个简单的计算器程序。

汇编语言编程实验报告

汇编语言编程实验报告

汇编语言编程实验报告汇编语言程序设计实验报告(一)汇编语言程序设计实验报告(一)一、预备知识汇编语言程序设计是一门实践性很强的课程。

编写程序、上机调试、运行程序是进一步学习和掌握汇编语言程序设计的必要手段。

二、实验目的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+4+5+6+7+8+9 的和,并将和显示在屏幕上; 具体要求: 1. 利用重复宏定义实现 1、2、39 数据的定义; 2. 将单个字符显示定义成宏,利用宏调用来实现和的显示。 3. 利用 PWB 集成环境完成程序的编辑、汇编及连接,并最终生成 COM 可执行文件。
二、实验内容 P131 作业 29。
实验三子Βιβλιοθήκη 序设计实验一、实验目的 1.掌握汇编语言源程序子程序设计方法; 2.会使用 CV 软件工具。
二、实验内容 把实验二作为子程序,编写主程序来对能否构成三角形进行 10 判断。
姓名:
汇编语言程序设计实 验报告
实验四
宏汇编程序设计实验
一、实验目的 1.掌握宏汇编程序编程技术及宏调用的方法; 2. 了解 COM 文件的编程方法及特点; 2.会使用 PWB 及 CV 软件工具。
实验五
混合程序的开发实验
一、实验目的 1.了解混合调用中的参数设置; 2. 掌握混合调用的方法;
姓名:
二、实验内容 P156 第 5 题。
汇编语言程序设计实 验报告
班级 :
姓名:
汇编语言程序设计实 验报告
实验一
单指令功能测试实验
一、实验目的 1.会使用 DEBUG 软件; 2.利用 DEBUG 单步执行功能测试指令的执行。
班级 :
二、实验内容 P129,14 题
实验二
完整的汇编语言程序设计实验
一、实验目的 1.掌握完整的汇编语言源程序的设计方法; 2.掌握汇编语言源程序的执行过程。
实验五
多模块程序设计实验
一、实验目的 1.掌握汇编段的属性的含义; 2. 掌握利用 LINK 将多模块连接起来的方法; 3.掌握利用库文件将多模块连接起来的方法。

汇编语言实验报告

汇编语言实验报告

汇编语言实验报告实验一、汇编运行环境及方法、简单程序设计一、程序说明本程序用来比较两个字符串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. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

合肥工业大学计算机与信息学院实验报告课程:汇编语言程序设计专业班级:信息安全11-1学号:20112914姓名:王佳淼实验一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.22.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有符号数内存数)。

相关文档
最新文档