汇编语言实验4

合集下载

汇编语言实验4详细讲解

汇编语言实验4详细讲解

汇编语言实验4详细讲解一、引言汇编语言是一种底层的计算机语言,它直接操作计算机的硬件。

在汇编语言实验4中,我们将深入了解汇编语言的一些重要概念和技巧。

本文将详细讲解汇编语言实验4的内容,帮助读者更好地理解和应用汇编语言。

二、实验目的汇编语言实验4的主要目的是学习和掌握在汇编语言中使用条件和循环结构的方法。

通过实验,我们将能够编写能够根据条件执行不同操作的程序,并实现循环执行一定次数的功能。

三、实验内容1. 条件结构条件结构是根据条件的真假来执行不同的操作。

在汇编语言中,我们可以使用条件跳转指令来实现条件结构。

条件跳转指令根据条件寄存器的值来决定是否跳转到指定的地址执行。

常用的条件跳转指令有JZ、JNZ、JC、JNC等。

2. 循环结构循环结构是重复执行一段代码的结构。

在汇编语言中,我们可以使用循环指令来实现循环结构。

循环指令根据计数器的值来判断是否继续执行循环体,并在每次循环结束后更新计数器的值。

常用的循环指令有LOOP、LOOPE、LOOPZ、LOOPNE、LOOPNZ等。

四、实验步骤1. 定义和初始化计数器在循环结构中,我们首先需要定义一个计数器,并对其进行初始化。

计数器可以使用DX寄存器或AX寄存器来保存。

2. 执行循环体在循环结构中,我们需要执行的代码放在循环体中。

循环体的代码将会被重复执行,直到计数器的值为0或满足其他条件。

3. 更新计数器的值在每次循环结束后,我们需要更新计数器的值。

可以使用INC或DEC指令对计数器进行加1或减1操作。

4. 判断是否继续执行循环在每次循环结束后,我们需要判断是否继续执行循环。

可以使用循环指令来实现此功能。

根据计数器的值或其他条件来判断是否继续执行循环。

五、实验示例下面是一个简单的实验示例,演示了如何使用条件和循环结构来实现一个简单的程序:```MOV CX, 10 ; 初始化计数器为10MOV AX, 0 ; 将AX寄存器清零LOOP_START:ADD AX, CX ; 将CX的值加到AX中LOOP LOOP_START ; 循环执行,直到CX的值为0MOV BX, AX ; 将AX的值保存到BX寄存器中```在上面的示例中,我们首先将CX寄存器初始化为10,然后将AX 寄存器清零。

汇编语言程序设计实验报告四(算术运算程序实验)

汇编语言程序设计实验报告四(算术运算程序实验)

汇编语言程序设计实验报告四(算术运算程序实验)汇编语言程序设计实验报告四(算术运算程序实验)一、实验目的1、熟悉算术运算指令的功能与应用。

2、学习编写加法和乘法运算程序。

二、实验内容1、二进制运算计算23579+7684和0A5H+34H(1)原始数据分别存于A、B、C、D开始听内存单元中,运算结果分别存E、G开始的内存单元中。

(低位数在低字节中)(2)前两个数据在程序中用十进制表示,后两个数据在程序中用十六进制表示。

(3)十进制数定义成字变量,用16位加法。

十六进制数定义成字节变量,用8位加法。

2、多字节加法在内存中以FIRST和SECOND开始的单元中分别存放有两个10位压缩型十进制数(BCD 码),低位在前。

求这两个数的压缩十进制数和,并存到THIRD 开始的单元中。

(1)压缩十进制数亦称组合十进制数,一个字节存放二位BCD 码。

(2)两个加数可直接直接在程序中设置。

3、二进制乖法(1)在内存DATA1和DA TA2单元中分别存放着两个8位无符号二进制数A和B 。

求AXB,结果存于DATA3开始的内存单元中。

(2)在FIRST和SECOND开始的内存单元中,分别存放着两个16位带符号二进制数D和E,求DXE,结果存于THIRD开始的内存单元中。

三、实验准备1、仔细阅读本实验教材。

2、认真预习加法、乖法和十进制调整指令。

精心设计运算使用的实验数据。

(注意:应准备多组不同数据以备实验。

)3、根据实验内容,分别画出各个程序的流程图,并在实验前编好各个源程序。

四、实验步骤1、二进制数运算(1)题目的具体要求,将原始数据及存放结果的内存单元分别定义成字变量或字节变量。

(2)辑程序,把编写好的源程序建立为汇编语言源程序文件并存盘。

(3)对源程序文件进行汇编、连接,且修改至无错误,然后运行程序。

(4)利用调试程序观察运行结果。

如果有错,分析并找出错误原因,改写程序并重新调试。

2、多字节加法程序(1)在FIRST 和SECOND开始的内存单元中建立各为10位的压缩型BCD码的数据区,数据要选择得当。

汇编实验四报告

汇编实验四报告

汇编语言程序设计实验报告班级:计科1班学号:姓名:实验日期2015.11.2 成绩实验四子程序设计采用子程序设计,结合分支,循环程序设计,通过调用输入子程序,实现从键盘输入一个数组,然后调用显示子程序显示所输入的数组。

程序框图:程序清单:DATA SEGMENTBUF DB 7 DUP(?)N DB 2DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXLEA SI,BUF ;BUF首地址送给SIMOV CX,7L1:CALL KeyinBL ;调用KeyinBL输入子程序MOV [SI],BLCALL SkipN ;调用SkipN空格子程序INC SI ;SI+1DEC CXJNZ L1CALL CRLH ;调用CRLH子程序MOV CX,7LEA SI,BUFL2:MOV BL,[SI]CALL DisplayBL ;调用KeyinBL输入子程序CALL SkipN ;调用SkipN空格子程序INC SIDEC CX ;CX-1JNZ L2 ;≠0则转到L2MOV AH,4CHINT 21HCRLH PROCMOV DL,0AH ;换行MOV AH,2 ;显示一个字符(2号功能)INT 21HMOV DL,0DH ;回车MOV AH,2 ;显示一个字符(2号功能)INT 21HRETCRLH ENDPSkipN PROCPUSH CX ;CX压栈MOV CX,2SK:MOV DL,20H ;空格的ASCII码MOV AH,2INT 21HDEC CX ;CX-1JNZ SK ;≠0则转SKPOP CX ;CX出栈RETSkipN ENDPKeyinBL PROCPUSH CXMOV BL,0 ;将BL寄存器清0MOV CH,2 ;循环次数为2次MOV CL,4 ;移位位数为每次移4位K2:SHL BL,CL ;将BL中的数左移四位MOV AH,1 ;从键盘输入一个数(1号功能)INT 21HSUB AL,30H ;减30HCMP AL,0AH ;比较AL与0AJB K1 ;小于则转到K1SUB AL,7K1:OR BL,AL ;BL和AL相或DEC CHJNZ K2 ;≠0则转K2POP CXRETKeyinBL ENDPDisplayBL PROCPUSH CXMOV CH,2MOV CL,4D2:ROL BL,CLMOV DL,BLAND DL,0FH ;DL˄0F相与ADD DL,30H ;DL+30HCMP DL,3AH ;如果DL<3AHJB D1 ;则转到D1ADD DL,7 ;加7D1:MOV AH,2 ;显示一个字符(2号功能)INT 21HDEC CHJNZ D2 ;≠0则转D2RETPOP CXDisplayBL ENDPCODE ENDSEND STARTCODE ENDSEND START运行结果:运行结果图内存图实验总结:。

实验4 顺序结构程序设计

实验4  顺序结构程序设计

河北工业大学城市学院《汇编语言程序设计》实验报告实验4 顺序结构程序设计一、实验目的1.掌握汇编语言集成开发环境下编写完整汇编程序的书写方法。

2.掌握汇编语言集成开发环境下汇编程序的汇编、连接、执行和调试。

3.常用伪指令的使用。

4. 掌握顺序结构程序的编写方法。

二、实验内容1.从键盘输入一个大写字母,将其转换为小写字母并显示在屏幕上解:程序代码为:DATAS SEGMENTDATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS START:MOV AX,DATASMOV DS,AXMOV AH,1;功能号为1,键盘输入单字符并回显INT 21HADD AL,32MOV DL,ALMOV AH,2;功能号为2,显示输出单字符INT 21HMOV AH,4CHINT 21HCODES ENDSEND START运行结果如图所示:2.在内存X和Y单元各存放了一个非压缩BCD码,将它们组合为压缩BCD码并存于Z单元(高地址做高位)。

解:程序代码为:DATAS SEGMENTX DB 00000101BY DB 00000110BZ DB?DATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS START:MOV AX,DATASMOV DS,AXMOV CL,4SHL X,CLMOV CL,YOR CL,XMOV Z,ALMOV AH,4CHINT 21H CODES ENDSEND START运行结果如图所示:3.在内存TAB开始的16个单元连续存放了0-15的平方值(0-225),任给一个数X(0 ≤X ≤15),求X的平方值,并把结果存放在Y单元中。

解:程序代码为:DATAS SEGMENTTAB DB 0,1,4,9,16,25,36DB 49,64,81,100,121DB 144,169,196,225X DB 6Y DB? DATAS ENDS CODESSEGMENTASSUME CS:CODES,DS:DATAS START:MOV AX,DATASMOV DS,AXLEA BX,TABMOV AL,XMOV AH,0ADD BX,AXMOV AL,[BX]MOV Y,ALMOV AH,4CHINT 21H CODES ENDSEND START。

汇编语言实验报告四

汇编语言实验报告四

实验4实验学时: 2 实验地点:二综实验日期:一、实验目的掌握汇编编程规范,熟悉编程环境。

二、实验内容编程计算3550H-2320H,按16进制输出计算所得的差1230H。

再输出3550H-2321H的差,检验程序的正确性。

提示:考虑依次将1230H(即0001 0010 0011 0000B)从高位到低位,每4位二进制数一组分离出来,再将4位二进制数转换为ASCII码,利用DOS系统功能调用的2号子功能输出,就得到16进制数据的输出效果。

本题要求综合应用移位操作、逻辑操作等指令,并利用条件转移指令实现简单的循环程序,程序流程如图1所示。

DOS系统功能调用的2号子功能格式见dos调用表。

图1 16进制数据输出程序流程图三、实验步骤算法及关键代码1.分析1)关于rol指令rol bx,t:把目的地址中的数据循环左移t次,每次从最高位(最左)移出的数据位都补充到最低位(最右),最后从最高位移出的数据位保存到CF标志位。

2)将dl4位二进制转换为ASCII码add dl,30h2.主要代码如下DATAS SEGMENT;此处输入数据段代码DATAS ENDSSTACKS SEGMENT;此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV bx,3550hMOV ax,2320hsub bx,axmov cx,4;此处输入代码段代码B: rol bx,1rol bx,1rol bx,1rol bx,1mov dl,bland dl,00001111badd dl,30h;二进制转换为ASCII码mov ah,02hint 21hloop BMOV AH,4CHINT 21HCODES ENDSEND START3.运行4.执行结果如下四.实验小结(简单说明实验过程中出现的问题和解决方法)1. 出现错误“MOV AH,2h INT 21H ”未写在主程序段B内,导致没有输出。

《汇编语言》实验报告

《汇编语言》实验报告

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

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

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

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

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

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

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

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

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

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

e.关闭显示模式。

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

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

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

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

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

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

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

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

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

汇编语言实验报告4

汇编语言实验报告4

程及屏幕字符显示程序一、实验目的1、熟练掌握汇编语言的程序格式,程序设计方法;学会使用masm6.11对源程序进行编译、链接、调试和运行2、利用DOS功能调用INT21H的2号和9号功能进行屏幕显示的方法。

3、利用^Break退出程序的方法及局限性。

4、汇编程序的编写二、实验任务1学习汇编语言程序的上机过程2. 利用INT 21的09H号功能调用显示字符串。

验证以下程序1)用A命令在100H处键入下列程序:MOV AH, 9MOV DX,110INT 21INT 202)用A命令在110H处键入下列字符串的ASCII码:DB 'This is a sample!$'3)用N命令和W命令将此程序(包括数据区)存入文件名为的磁盘文件中。

(存入前BX:CX必须置为文件长度值)。

4)用Q命令退出DEBUG。

5)在DOS命令下打AA,运行此程序,即在屏幕上显示'This is a sample!'字符串,若不出现,用DEBUG 检查程序有无错误。

(给出结果截图)3、利用INT 21H 2号功能显示字符: 1)用A命令在100H处键入下列程序: XOR DL,DLMOV CX,100LOP: MOV AH,2INT 21INC DLPUSH CXMOV CX,8DELY: PUSH CXMOV CX,256J: LOOP JPOP CXLOOP DELYPOP CXLOOP LOPINT 202)用G命令运行程序,即在屏幕上依次缓慢的显示256个ASCII字符。

仔细观察每个字符,和IBM-PC ASCII码表对照,看07H-0DH处控制字符显示结果与表上有何不同?3)按CTRL+BREAK退出此程序,若一次不行可多做几次。

4 编写一个简化的段定义结构程序:先提示输入数字“Input number:0-9”,然后在下一行显示输入的数字,结束;如果不是键入了0-9 数字,就提示错误“ERROR!”,继续等待输入数字。

汇编第四次实验报告

汇编第四次实验报告

实验四字符及字符串的输入和输出一、实验目的1.熟悉如何进行字符及字符串的输入输出。

2.掌握简单的DOS系统功能调用。

二、实验预习要求1.复习系统功能调用的1、2、9、10号功能。

2.按照题目要求预先编写好实验中的程序段。

三、实验任务1.输入以下程序段并用F8键单步运行,执行INT 21H指令时,在键盘上按“5”键。

MOV AH,1INT 21H(1)运行结束后,(AL)=?它是哪一个键的ASCII码?(AL)=35。

他代表的是5的ASCII码。

(2)重复运行以上程序段,并分别用“A”、“B”、“C”、“D”键代替“5”键,观察运行结果有何变化?“A”、“B”、“C”、“D”分别是得到41、42、43、44.他们分别是A、B、C、D的ASCII码值。

2.在DS:1000H开始的内存区域设置如下键盘缓冲区:DS:1000H 5,0,0,0,0,0,0然后输入以下程序段并用F8键单步运行,执行INT 21H指令时,在键盘上键入“5”、“4”、“3”、“2”、“1”、〈回车〉这六个键。

LEA DX,[1000H]MOV AH,0AHINT 21H程序段运行完后,检查DS:1000H开始的内存区域:(1)DS:1001H单元的内容是什么?它表示了什么含义?DS:1001H内容为04H,他表示实际输入的字符个数。

(2)从DS:1002H开始的内存区域中的内容是什么?其中是否有字符“1”的ASCII码?为什么?从DS:1002H开始的内存区域中的内容分别是5、4、3、2和回车键的ASCII码。

其中没有字符“1”的ASCII码,因为实际长度只有4位,其中有一位是回车键,所以没有字符“1”的ASCII码。

3.输入以下程序段并运行之。

MOV DL,‘A’MOV AH,2INT 21H(3)观察屏幕上的输出,是否显示了“A”字符?显示了A了。

(在敲入代码的时候不可以直接敲入‘A’,而应该是敲入A的ASCII码即41)如下图:(4)分别用“#”、“X”、“Y”、“$”、“?”代替程序段中的“A”字符,观察屏幕上的输出有何变化。

汇编语言实验报告

汇编语言实验报告

计算机专业类课程实验报告课程名称:汇编程序语言设计学院:计算机科学与工程专业:计算机科学与技术学生姓名:林*学号:*************指导教师:胡*日期:2014年12 月15 日电子科技大学计算机学院实验中心电子科技大学实验报告实验一1、实验名称:汇编源程序的上机调试操作基础训练2、实验学时:43、实验内容和目的:实验内容:1.DEBUG命令的使用2.程序的调试与运行1.编写程序计算以下表达式: Z=(5X+2Y-7)/2设X、Y的值放在字节变量VARX、VARY 中,结果存放在字节单元VARZ中。

实验目的:1.掌握DEBUG的基本命令及其功能2.学习数据传送和算术运算指令的用法3.熟悉在PC机上编辑、汇编、连接、调试和运行汇编语言程序的过程。

4、实验原理:1.编辑源程序,建立一个以后缀为.ASM的文件.2.汇编源程序,检查程序有否错误,有错时回到编辑状态,修改程序中错误行。

无错时继续第3步。

3.连接目标程序,产生可执行程序。

4.用DEBUG程序调试可执行程序,记录数据段的内容。

5、实验器材(设备、元器件)pc、window7平台、masm5开发环境6、实验步骤:1、在数据段中分别用两个单元varx和vary存放变量x 和y;另一个单元varz用来存放运算结果Z;2、由于是字节变量,所以用al 存放变量x的值,然后将al 左移两位得到4*x,再把al加上x,进而得到5*x;3、再用bl存放变量y 的值,用add命令得到2*y,之后把al 与bl相加,再用sub命令减去7,得到(5*x+2*y-7)的值,并保存到al中;4、最后将al右移一位,得到最后的z=(5*x+2*y-7)/2,并把al 的值送入varz单元;5、运行程序,使用-d 命令查看内存单元的信息;7、实验数据及结果分析:实验代码如下:电子科技大学计算机学院实验中心实验结果如下图:1、编译连接后执行程序:2、查看内存单元变量的值varx=05h,vary=07h,(5x+2y-7)/2=(25d+14d-7d)/2d=16d=10h可以看到上图中内存单元的值与手工计算的结果相符,说明程序是正确的。

汇编语言实验报告

汇编语言实验报告

汇编语言实验报告
1. 实验简介
本次实验是针对汇编语言的学习和实践,在实验中,我们将学习如何使用汇编语言编写程序、调试程序,并通过一系列实例来练习和巩固所学知识。

2. 实验目的
(这一部分可以根据实际情况来写,列举实验的具体目的和要求)
3. 实验环境及工具
(介绍实验所使用的软件环境和工具,如:编译器、调试器)
4. 实验步骤
(根据实验内容具体描述实验步骤,可以分为多个小节)
4.1 准备工作
在开始实验之前,需要进行一些准备工作,包括安装编译器、创建工作环境等。

4.2 实验一:简单的汇编程序
本实验通过编写一个简单的汇编程序来熟悉汇编语言的基本语法和指令集,包括数据传送、算术运算、逻辑运算等。

4.3 实验二:汇编程序的调试
在实验二中,我们将学习如何使用调试器对汇编程序进行调试,包括设置断点、查看变量值、单步执行等操作。

4.4 实验三:汇编程序的优化
本实验将通过优化代码来提高程序的执行效率,包括减少指令的使用、优化循环结构等。

5. 实验结果与分析
(对实验的结果进行总结和分析,可以包括程序的输出结果、性能分析等)
6. 实验总结
(针对本次实验的收获和心得体会进行总结,可以包括对汇编语言的理解、解决问题的思路等)
7. 实验感想
(对本次实验的感想和建议,如实验过程中遇到的困难、改进的方向等)
8. 参考文献
(列出本报告中所引用的参考文献)
注:该文章只是按照题目提示给出了一个大致的框架和构思,实际根据具体的实验内容和要求来编写每个小节的详细内容。

希望对你有所帮助!。

汇编语言上机实验汇总

汇编语言上机实验汇总

汇编语言上机实验汇总汇编语言是计算机的低级语言,主要用于编写底层程序和驱动程序。

在学习汇编语言的过程中,学生通常需要进行一定数量的上机实验。

下面是一个汇编语言上机实验的汇总。

1.实验一:环境搭建-目标:搭建汇编语言开发环境2.实验二:基本语法-目标:学习汇编语言的基本语法和指令格式-内容:编写一个简单的汇编程序,包括数据段、代码段和堆栈段,以及常用指令(例如MOV、ADD、SUB、JMP等)的使用。

3.实验三:寄存器和内存操作-目标:熟悉汇编语言中的寄存器和内存的操作-内容:编写一个汇编程序,通过MOV指令将数据从内存中加载到寄存器中,然后进行运算,并将结果存储回内存。

4.实验四:条件分支和循环-目标:掌握汇编语言中的条件分支和循环结构-内容:编写一个汇编程序,使用条件分支指令(例如CMP、JE、JNE 等)实现一个简单的判断语句;然后使用循环指令(例如LOOP)实现一个简单的循环结构。

5.实验五:子程序和参数传递-目标:学习如何创建和调用子程序,并传递参数-内容:编写一个汇编程序,其中包含一个子程序,该子程序接受两个参数并返回它们的和。

然后在主程序中调用该子程序,并输出结果。

6.实验六:中断和异常处理-目标:了解中断和异常处理机制,并在汇编程序中处理中断或异常-内容:编写一个汇编程序,其中包含一个中断处理程序,当发生特定的中断时,该处理程序将执行一些特定的操作。

7.实验七:串操作和文件操作-目标:学习汇编语言中的串操作和文件操作-内容:编写一个汇编程序,使用串操作指令(例如MOVS、LODS、STOS等)操作字符串;然后使用文件操作指令(例如OPEN、READ、WRITE 等)读取或写入文件。

8.实验八:图形和音频处理-目标:了解汇编语言中的图形和音频处理- 内容:编写一个汇编程序,使用图形库(例如BGI、OpenGL、DirectX)绘制简单的图形或运行一个音频文件。

这些上机实验可以帮助学生逐步掌握汇编语言的基本知识和技能,并为以后的高级汇编语言编程打下基础。

第四次汇编语言实验报告

第四次汇编语言实验报告

汇编语言实验报告Assembly Language Programming Lab Reports______________________________________________________________________________ 班级:姓名:学号:实验日期:学院:专业:实验顺序:原创:___ 实验名称:循环程序设计实验分数:_______ 考评日期:________ 指导教师:______________________________________________________________________________ 一.实验目的1、掌握两种循环结构,DO WHILE的循环结构用CMP指令和条件转移指令构成。

DO UNTIL用loop,loope,loopne这三种指令实现。

2、掌握以下指令掌握循环指令,loop,loope,loopne。

掌握串处理指令,movs,cmps,scas,lods,stos 以及和他们联合使用的重复前缀指令rep,repz,repnz。

掌握伪指令 EQU 及操作符 '$'的使用。

掌握cmp,test和条件转移指令构成的循环结构。

3、掌握循环程序的设计过程,写出设计方法,给出程序框图,写出循环程序。

4、掌握多重循环中,可以由内层循环向外层循环跳转,或者直接向外层程序跳转,但是不允许从外向内跳转。

5、会用循环实现排序算法。

______________________________________________________________________________二.实验环境操作系统:windows 8编译程序:masm 5.0______________________________________________________________________________三.实验原理原理:①loop循环②两层、三层循环的嵌套______________________________________________________________________________四.实验步骤及结果分析1.简单的循环程序。

实验四(报告)汇编语言编程的软件实训(实验报告)

实验四(报告)汇编语言编程的软件实训(实验报告)

实验四汇编语言编程实验报告
专业:班级:学号:姓名:
一.实验目的
熟悉汇编语言的编辑(如、QE.EXE及记事本等),汇编(MASM.EXE),连接(LINK.EXE)以及调试(DEBUG.EXE)软件。

二.实验设备
硬件环境:IBM/PC及其兼容机
软件环境:操作系统DOS 2.0版本以上;
汇编语言的编辑程序(如EDIT、QE、Windows操作系统自带的记事本等)、
汇编程序程序MASM、连接程序LINK及调试程序DEBUG。

三.实验要求
1. 试按下列给定的公式编写程序:编写源程序,参照P232 x1,x2,x3,x4在16位二进制数的范围内,且有意义)
(3*X1-(X2*X3+7*X4-200))/X3
其中,X1, X2, X3, X4为16位带符号数的字变量。

计算结果的商存在AX中,余数存放在DX中。

2.用编辑软件生成扩展名为.ASM的源文件,如:TEST.ASM,ABC.ASM等;
3.用汇编程序MASM.EXE对已编辑的源文件进行汇编并生成扩展名为.OBJ的目标程序名,如:TEST.OBJ,ABC.OBJ等;
4.用连接程序LINK.EXE进行连接生成扩展名为.EXE的可执行文件,如:TEST.EXE,ABC.EXE等;
5.应用调试程序DEBUG.EXE的主要命令对所生成的可执行文件进行调试。

四.实验过程及结果:
1.汇编生成目标文件结果如下:
2.连接生成可执行程序结果如下:
3.调试结果FUN的值为:
四.课后设计题:1.源程序:
2.计算结果:。

汇编语言(王爽第三版)实验4[bx]和loop的使用

汇编语言(王爽第三版)实验4[bx]和loop的使用

汇编语⾔(王爽第三版)实验4[bx]和loop的使⽤实验4 [bx]和loop的使⽤1.编程:向内存0:200H~0:23fH依次传送数据0~63(3FH)程序分析:【1】内存0:200H~0:23fH空间与0020:0-0020:3f内存空间是⼀样的,(这个不会?oh!My God!,物理地址是唯⼀的,但逻辑地址组合是多种的。

)【2】因为偏移地址是连续内存单元;我们可以把偏移地址做下⽂章。

bx寄存器存储偏移地址(通过偏移地址的间接访问内存单元,这主要是写⼊的内存单元)。

dx寄存器作为存储中间变量的容器(源数据,常量0-63)来向内存写⼊。

汇编代码如下:assume cs:codecode segmentmov ax,0020Hmov ds,ax ;内存单元的段地址写⼊ds寄存器mov bx,0 ;bx寄存器存放偏移地址,初始化为0mov dx,0 ;dx寄存器存储常量数值0~63mov cx,40H ;这⾥40H==64,cx寄存器存放循环次数。

也可以为64;s: mov [bx],dx ;向[bx]内存单元写⼊dx值inc bx ;累加bxinc dx ;累加dxloop smov ax,4c00Hint 21Hcode endsend2. 向内存0:200H~0:23fH依次传送数据0~63(3FH),9条命令的程序的简化版本(不包括伪代码):程序分析:【1】内存0:200H~0:23fH空间与0020:0-0020:3f内存空间是⼀样的,(这个不会?oh!My God!,物理地址是唯⼀的,但逻辑地址组合是多种的。

)为什么这样?数据0-63是64个连续的数字,0-3fH也是连续的64个编号。

我们可以使⽤⼀个bx变量就把偏移地址和数字的递增都搞定了!修改后的汇编代码如下:assume cs:codecode segmentmov ax,0020Hmov ds,ax ;ds指向0020内存段mov bx,0 ;bx寄存器存放偏移地址,初始化为0,也当做源数据:常量数值mov cx,64 ;循环次数64s: mov [bx],bx ; 向[bx]内存单元写⼊bx数值inc bxloop smov ax,4c00Hint 21Hcode endsend实验体会:1. bx寄存器⼀般⽤作偏移地址的存储,[bx]也就代表了段地址与[bx]组合后指向的内存单元。

汇编语言编程实验报告

汇编语言编程实验报告

汇编语言编程实验报告汇编语言编程实验报告学号:姓名:成绩:目录一、实验一: ......................................................错误!未定义书签。

二、实验二: (4)三、实验三: (8)四、实验四: (10)五、实验五: ......................................................错误!未定义书签。

六、实验六: (19)七、汇编实验总结 (23)实验一一.实验题目【汇编语言补充作业T20】编写完整程序,利用DOS系统功能调用,从键盘输入一个字符串,并将该字符串从屏幕上换行后并输出。

二.程序流程及思路实现字符串输入,需要分成三个步骤:1、在数据段中定义一个缓存区为存放字符串做准备;2、DOS系统功能调用0AH号子功能,(DS:DX)= 输入缓冲区首址;3、在输入的字符串尾加上‘$’字符,以作为输出结束条件。

实现字符串输出,则需要注意的问题是:1、缓冲区第三个字节才开始存放输入的字符,前两个字节分别存放缓冲区长度和字符串实际字符数;2、输出回车换行可利用字符串:CR DB 0AH,0DH,’$’。

三.源程序清单DATA SEGMENTN EQU 50MAXLEN DB N ;缓冲区字符的最大长度ACTLEN DB ? ;实际字符个数STRING DB N DUP(?) ;字符空间CR DB 0AH,0DH,'$'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATAMOV DS,AXLEA DX,MAXLENMOV AH,0AHINT 21H ;字符串输入MOV AH,09HLEA DX,CRINT 21H ;回车换行MOV BL,MAXLEN+1 ;取实际的字符长度MOV BH,0LEA SI,MAXLEN+2 ;取字符开始的首地址MOV BYTE PTR [SI+BX],'$' ;输出结尾要加上$ MOV DX,SI ;把开始存放字符的首地址赋给DX MOV AH,09HINT 21HMOV AH,4CHINT 21HCODE ENDSEND START四.结果拷屏实验二一. 实验题目【汇编语言补充作业T23】假设CX:BX中存放了4为非压缩的BCD码表示的十进制数4386,请编写完整程序将这个数转化成2进制数并存放到DI寄存器中。

汇编实验报告4

汇编实验报告4

实验四子程序设计一、实验目的1.掌握子程序设计与调用方法。

2.掌握子程序参数的传递方法。

3.进一步熟悉debug的使用。

二、实验内容编程并调试:在内存中两个变量buf1、buf2保存两个整数,相加后存入re中,再将结果(re中)按16进制显示。

要求:两数相加用子程序实现,参数使用地址表形式;输出用子程序实现,参数用堆栈传递。

流程图:输入2个数在内存相加存入RE转换为16进制输出编写程序汇编后如图:链接后如图:Debug 后如图:源代码:data segmentbuf dw 23,45re dw ?table dw 2 dup(?)data ends;********************************stack_seg segment stackdw 50 dup(?)tos label wordstack_seg ends;******************************** prognam segment;--------------------------------main proc farassume ds:data,cs:prognam,ss:stack_seg start:mov ax,stack_segmov ss,axmov sp,offset tospush dssub ax,axpush axmov ax,datamov ds,axmov table,offset bufmov table+2,offset remov bx,offset tablecall near ptr proaddmov bx,offset repush bxcall far ptr to_hexretmain endp;---------------------------------- proadd proc nearpush axpush sipush dimov si,[bx]mov di,[bx+2]sub ax,axadd ax,[si]add ax,[si+2]mov [di],axpop dipop sipop axretproadd endp;---------------------------------- prognam ends;********************************** code segmentassume cs:code;---------------------------------- to_hex proc farpush bpmov bp,sppush bxpush axpush cxpush simov ch,4 ;循环4次sub bx,bxmov si,[bp+6]add bx,[si]rotate: mov cl,4rol bx,clmov al,bland al,0fhadd al,30hcmp al,3ah ;is it >9?jl printitadd al,7hprintit:mov dl,almov ah,2int 21hdec chjnz rotatepop sipop cxpop axpop bxpop bpret 2to_hex endp;----------------------------------- code ends;*********************************** end start。

北京理工汇编语言实验四实验报告

北京理工汇编语言实验四实验报告

汇编语言实验四实验报告——分支和循环程序设计实验(设计性实验)班级:05211102姓名:庞珂学号:1120111306日期:2013.9.10早8:30:00~11:30分支和循环程序设计实验(设计性实验)一、实验要求和目的1.熟悉汇编语言程序设计结构;2.熟悉汇编语言分支程序基本指令的使用方法;3.掌握利用汇编语言实现单分支、双分支、多分支的程序设计方法;4.了解汇编语言循环程序设计的基本流程;5.熟悉汇编语言循环基本指令的使用方法;6.掌握利用汇编语言的循环指令完成循环程序设计方法。

二、软硬件环境1、硬件环境:计算机系统windows;2、软件环境:装有MASM、DEBUG、LINK、等应用程序。

三、实验涉及的主要知识在实际应用中,经常根据一些条件来选择一条分支执行。

汇编语言的条件判断主要是通过状态寄存器中的状态位、无符号数相减或有符号相减而导致的结果来进行。

1.无条件转移指令JMP无条件转移指令JMP 是使程序无条件转移至目标处,又分为段内转移、段间转移。

2.条件转移指令JXX条件转移指令可分为三大类:标志位指令转移条件意义CF JC CF=1 有进位/借位JNC CF=0 无进位/借位ZF JE/JZ ZF=1 相等/等于0JNE/JNZ ZF=0 不相等/不等于0SF JS SF=1 是负数JNS SF=0 是正数OF JO OF=1 有溢出JNO OF=0 无溢出PF JP/JPE PF=1 有偶数个1JNP/JP0 PF=0 有奇数个12).无符号数条件转移指令。

假设在条件转移指令前使用比较指令,比较两个无符号数A,B,指令进行的的操作是A-B,其转移指令如下:指令转移条件意义JA/JNBE CF=0 AND ZF=0 A>BJAE/JNB CF=0 OR ZF=1 A>=BJB/JNAE CF=1 AND ZF=0 A<BJBE/JNA CF=1 OR ZF=1 A<=B3).带符号数条件转移指令。

总汇编语言实验4涉及压缩BCD码大数据地转换程序及DEBUG练习

总汇编语言实验4涉及压缩BCD码大数据地转换程序及DEBUG练习

实用文档ASCII码与BCD码之间的转换1)字符的ASCII码表示计算机中存储的信息很多,其中一部分是用于数学计算的数据,另一部分则是表示某种含义的字符或字符串。

由于从键盘输入的或屏幕显示的信息,都是用字符串的形式表示的。

因此,微机中必须能够存储和处理字符和字符串。

计算机中使用的字符包括有如下4类:·字母:A、B、C、…、Y、Z、a、b、c、…、y和z。

.数字:0、1、2、3、 (9)·专用符号:!、、+、-、﹡、/、……·控制字符:BEL(响铃)、LF(换行)、CR(回车)……这些字符在计算机部都由特定的二进制数表示。

目前在微机中,最常用的字符表示法是ASCII码(American Standard Code for Information Interchange,美国标准信息交换码)。

在这种表示法中,每一个字符可以表示为一个8位的二进制数,即一个字节。

其中。

低7位用于表示该字符的ASCII值,最高位未定义,一般可用作奇偶校验位。

常用字符的ASCII码表见表1.2。

2)、十进制数的BCD码表示BCD码(Binary Code Decimal),又称“二进制表示的十进制数”,是一种非常适合数据输出的编码。

一般而言,它可分为如下两种:(1)、压缩型BCD码:它用4位二进制数表示一位十进制数。

即采用二进制数0000~1001分别表示十进制数中的0~9,而另6种组合1010~1111在BCD中则不允许出现;(2)、非压缩型BCD码:它用8位二进制数,即一个字节表示一位十进制数。

其高4位固定为0,而低4位采用二进制数0000~1001分别表示十进制数中的0~9。

亦即用0000 0000~0000 1001分别表示十进制数中的0~9。

而其余组合则不允许出现。

表1列出了十进制数与BCD编码的对应关系。

1.按如下步骤操作,了解DEBUG 命令及其使用方法。

(1)打 DEBUG 进入 DEBUG 控制,显示提示符 '_ '。

汇编实验报告

汇编实验报告

实验一(1)熟悉汇编语言程序调试环境及顺序程序设计一、实验目的及要求:1.学习及掌握汇编语言源程序的书写格式和要求,明确程序中各段的功能和相互之间的关系。

2.学会使用EDIT、MASM、LINK、DEBUG等软件工具。

3.熟练掌握在计算机上建立、汇编、连接、调试及运行程序的方法。

二、熟悉汇编语言程序调试环境1.汇编语言源程序的建立本例中给出的程序是要求从内存中存放的10个无符号字节整数数组中找出最小数,将其值保存在AL寄存器中。

设定源程序的文件名为ABC。

DATA SEGMENTBUF DB 23H,16H,08H,20H,64H,8AH,91H,35H,2BH,7FHCN EQU $-BUFDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: PUSH DSXOR AX,AXPUSH AXMOV AX,DATAMOV DS,AXMOV BX,OFFSET BUFMOV CX,CNDEC CXMOV AL,[BX]INC BXLP: CMP AL,[BX]JBE NEXTMOV AL,[BX]NEXT: INC BXDEC CXJNZ LPMOV AH,4CHINT 21HCODE ENDSEND START键入以下命令:C:\>EDIT ABC.ASM此时屏幕的显示状态如图1所示。

图1 用EDIT编辑ABC.ASM程序窗口程序输入完毕后一定要将源程序文件存入盘中,以便进行汇编及连接,也可以再次调出源程序进行修改。

2.将源程序文件汇编成目标程序文件一般情况下,MASM汇编程序的主要功能有以下3点:(1)检查源程序中存在的语法错误,并给出错误信息。

(2)源程序经汇编后没有错误,则产生目标程序文件,扩展名为.OBJ。

(3)若程序中使用了宏指令,则汇编程序将展开宏指令。

源程序建立以后,在DOS状态下,采用宏汇编程序MASM对源程序文件进行汇编,其操作过程如图2所示。

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

实验四、简单顺序程序设计(2)
一、实验目的
1.掌握加法、减法、乘法及除法指令的使用。

2.掌握相应的调整指令的功能与应用。

3.掌握移位指令与逻辑指令的功能与使用。

4.掌握顺序程序设计的思路与方法。

二、实验内容
1.将教材例题6.2.1程序补充完整并进行调试,观察结果。

2.编程实现四则运算(参与运算的数据均为一位数,且减法结果不为负数),效果如下:Input the first number:9
Input the second number:4
9+4=13
9-4=5
9*4=36
9/4=2 (Remainder is 1)
3.已知在数据区中有两个压缩BCD码分别为num1和num2(该数据均为两位),编写一程序,求得两数据的和与差,分别存入result1和result2中并输出,效果如下(注:本题并不要求输入数据):
39+17=56
39-17=21
4.用移位指令实现X*30的运算,其中X为定义在数据区的变量。

(本题不强制要求输入与输出)
5.在数据区中存在三个字变量,分别为var1、var2和var3,试编写程序完成如下两种变换,分别存入game1和game2中。

示意图和举例如下:
Var1 ⑤①②
Game1①②③④Var2 ⑥③
Game2②⑤⑦⑥Var3 ④⑦
举例:var1值为:1234H,var2值为:5678H,var3值为:9ABCH,则game1的值应为:2389H,game2的值应为:31C7H。

6.按教材P98习题15要求,编写相应程序并进行调试。

第 1 页共1页。

相关文档
最新文档