汇编语言上机实验指导书

合集下载

汇编语言实验指导书

汇编语言实验指导书

目录第一部分汇编语言程序的上机过程 (1)一、建立汇编语言的工作环境 (1)二、在计算机上运行汇编语言的步骤 (1)三、建立ASM文件 (1)四、用MASM程序产生OBJ文件 (3)五、用LINK程序产生EXE文件 (3)六、程序的执行 (3)七、举例 (3)第二部分汇编语言上机调试 (4)一、为何需要调试? (4)二、如何进行调试? (5)第三部分汇编语言上机内容 (8)实验一输出字符串 (8)实验二算术指令综合编程 (8)实验三查找子字符串 (9)实验四字符串正向、反向输出 (9)实验五信息检索 (9)实验六格式化输出 (9)实验七数组合并 (10)实验八字符统计 (10)实验九数制转换 (10)第四部分汇编语言实验参考代码 (11)实验一输出字符串 (11)实验二算术指令综合编程 (11)实验三查找子字符串 (12)实验四字符串正向、反向输出 (13)实验五信息检索 (14)实验六格式化输出 (17)实验七数组合并 (18)实验八字符统计 (20)实验九数制转换 (22)第一部分汇编语言程序的上机过程一、建立汇编语言的工作环境为运行汇编语言程序至少要在磁盘上建立以下文件:1、编辑程序,如EDIT.EXE2、汇编程序,如MASM.EXE3、连接程序,如LINK.EXE4、调试程序,如必要时,还可建立如CREF.EXE,EXE2BIN.EXE等文件。

二、在计算机上运行汇编语言的步骤1、用编辑程序建立ASM源文件,以ASM作为扩展名2、用汇编程序把ASM文件转换成OBJ文件3、用连接程序把OBJ文件转换成可执行文件4、在DOS提示符下直接键入可执行文件名即可执行该程序三、建立ASM文件建立ASM文件的编辑程序可以是DOS自身带的编辑程序EDIT.EXE,在DOS提示符下键入EDIT命令即可出现EDIT界面,其操作如下:D:\>edit源程序输入完后,以ASM作为扩展名进行保存,假设所保存的文件名为:ex.asm。

汇编实验指导书

汇编实验指导书

实验一汇编语言程序的上机过程一、实验目的掌握汇编语言源程序的编辑、汇编、连接及运行过程,为以后的实验打下基础。

二、实验内容1、输入下列完整的程序STACK SEGMENT STACKDB 200 DUP(?)STACK ENDSDATA SEGMENTBUF DB‘HOW ARE YOU!$’DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOV AX,DATAMOV DS,AXLEA DX,BUFMOV AH,9INT 21HMOV AH,4CHINT 21HCODE ENDSEND START(本程序的正确运行结果是在屏幕显示“HOW ARE YOU!”)2、完成课本P193习题5.1。

三、实验步骤(1)利用EDIT编辑源程序;(2)汇编源程序;(3)连接目标程序文件;(4)运行可执行文件。

四、实验报告要求写出以上两个实验内容的题目、源码、具体实验步骤和实验结果。

1.在屏幕上打印字符串”How are you?”。

(1)源代码:;打印字符串"How are you?"STACK SEGMENT STACKDB 200 DUP(?)STACK ENDSDATA SEGMENTBUF DB 'How are you?$'DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATA, SS:STACKSTART: MOV AX, DATAMOV DS, AXMOV AX, STACKMOV SS, AX;在屏幕上打印字符串LEA DX, BUFMOV AH, 9HINT 21HMOV AH, 4CHINT 21HCODE ENDSEND START(2)具体实验步骤:编辑→保存→masm→link→运行(3)结果截图:2.编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。

汇编语言上机实验指导书(不含源代码)

汇编语言上机实验指导书(不含源代码)

汇编语言上机实验指导书一、概述上机实验总学时为14学时,其中综合性实验为2学时。

实验共有6项暂定为7次,每次2学时。

1.实验辅导的主要内容实验辅导的内容包括每个实验的实验目的;实验内容;对实验的算法及实验方法的必要说明;实验准备;实验步骤;实验报告要求;实验程序及参考框图。

开始的实验介绍较细,后面的实验简要介绍。

2.实验的软硬件要求关于汇编语言程序设计的硬件要求不高,有IBM-PC/XT即可,但应有彩色显示器以便进行图形实验。

软件方面应有MASM.EXE5.0版(包括LINK.EXE),与MS-DOS版本配套的DEBUG程序和EDIT.EXE编辑软件(其它编辑软件也可以)。

3.加强实践能力的培养实验目的不光是为了验证书本理论,更重要的是对实践能力的培养。

其中包括:实际调试程序的能力,例如修改程序参数的能力,查看结果的能力,设置断点调试运行的能力等;开发汇编语言应用程序的能力,例如应用有关汇编软件的能力,进行系统调用和BIOS功能调用的能力,进行模块程序设计的能力等。

对某一问题用不同的程序实现的能力,例如我们为每个实验提供了参考程序(或程序段),目的是让每个实验者参照样板程序将实验成功地实现,在掌握其方法后,自己改变程序或自己编制程序加以实现。

实验一汇编语言运行环境及方法、简单程序设计(2学时、验证性)1.实验目的:(1) 熟悉汇编语言运行环境和方法(2)了解如何使用汇编语言编制程序(3) 熟悉DEBUG有关命令的使用方法(4) 利用DEBUG掌握有关指令的功能(5) 利用DEBUG运行简单的程序段2.实验内容(1)学会输入、编辑汇编语言程序(2)学会对汇编语言程序进行汇编、连接和运行(3)进入和退出DEBUG程序(4)学会DEBUG中的D命令、E命令、R命令、T命令、A命令、G命令等的使用。

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

3.实验准备(1)仔细阅读有关汇编语言环境的内容,事先准备好使用的例子。

汇编语言实验指导书 (3)

汇编语言实验指导书 (3)

实验报告实验课程:汇编语言学生姓名:李斯超学号:6100409010专业班级:电三091班2010年12月20日目录实验1 利用DEBUG调试汇编语言程序段实验2 初级程序的编写与调试实验(一)实验3 初级程序的编写与调试实验(二)实验4 汇编语言程序上机过程实验5 分支程序实验实验6 循环程序实验实验7 子程序实验实验1 利用DEBUG调试汇编语言程序段一.实验目的1.熟悉DEBUG有关命令的使用方法;2.利用DEBUG掌握有关指令的功能;3.利用DEBUG运行简单的程序段。

二.实验内容1.进入和退出DEBUG程序;2.学会DEBUG中的1)D命令(显示内存数据D 段地址:偏移地址)例1:-D1002)E命令(修改指定内存)例1:-E100 41 42 43 44 48 47 46 45-D 100,L08结果:08F1:0100 41 42 43 44 48 47 46 45例2:-E 100:08F1:0100 76 42 :42是操作员键入此命令是将原100号内存内容76修改为42,用D命令可察看。

3)R命令(显示当前寄存器的内容)4)T命令(设置陷井,单步执行)5)A命令(将指令直接汇编成机器码输入到内存中。

)6)G命令等的使用(执行A命中输入的汇编指令)3.用DEBUG,验证乘法、除法、加法、减法、带进位加、带借位减、堆栈操作指令、串操作指令的功能。

四.实验环境PC微机DOS操作系统或Windows 操作系统MASM.EXE,LINK.EXE,或宏汇编集成环境五.实验步骤1.在DOS提示符下,进入DEBUG程序;在运行中输入cmd命令调出DOS窗口,在其中输入debug命令进入程序。

2.详细记录每一步所用的命令,以及查看结果的方法和具体结果。

(1)在debug中输入D查看当前数据数据段的断地址:偏移地址中的内容。

如输入-d100,接着操作输入e命令,e命令可以修改指定的内存中的数据,如输入-e10041,42,43,44,48,47,46,45。

汇编语言上机实验指导书

汇编语言上机实验指导书

《汇编语言》实验指导书计算机实验中心目录目录::实验一利用DEBUG调试程序调试程序段 (4)实验二分支程序实验 (5)实验三循环程序实验 (8)实验四子程序实验(一) (9)实验五子程序实验(二) (13)实验六字符处理程序实验 (19)实验七输入输出实验 (23)试验八中断程序试验 (28)汇编语言上机实验指导书一、概述上机实验总学时为18学时,其中综合性和设计性实验至少为8学时。

实验的次数暂定为8次,每次2-3学时,可结合实际条件适当增减,但不少于6次。

1.实验辅导的主要内容实验辅导的内容包括每个实验的实验目的;实验内容;对实验的算法及实验方法的必要说明;实验准备;实验步骤;实验报告要求;实验程序及参考框图。

开始的实验介绍较细,后面的实验简要介绍。

2.实验的软硬件要求关于汇编语言程序设计的硬件要求不高,有IBM-PC/XT即可,但应有彩色显示器以便进行图形实验。

软件方面应有MASM.EXE5.0版(包括LINK.EXE),与MS-DOS版本配套的DEBUG 程序和EDIT.EXE编辑软件(其它编辑软件也可以)。

3.加强实践能力的培养实验目的不光是为了验证书本理论,更重要的是对实践能力的培养。

其中包括:实际调试程序的能力,例如修改程序参数的能力,查看结果的能力,设置断点调试运行的能力等;开发汇编语言应用程序的能力,例如应用有关汇编软件的能力,进行系统调用和BIOS 功能调用的能力,进行模块程序设计的能力等。

对某一问题用不同的程序实现的能力,例如我们为每个实验提供了参考程序(或程序段),目的是让每个实验者参照样板程序将实验成功地实现,在掌握其方法后,自己改变程序或本分改变程序加以实现。

实验一利用DEBUG调试程序调试程序段1.实验目的:(1)熟悉DEBUG有关命令的使用方法(2)利用DEBUG掌握有关指令的功能(3)利用DEBUG运行简单的程序段2.实验内容(1)进入和退出DEBUG程序(2)学会DEBUG中的D命令、E命令、R命令、T命令、A命令、G命令等的使用。

汇编语言上机指导

汇编语言上机指导

汇编语言上机指导实验一DEBUG常用命令及8086指令使用实验目的:通过实验掌握下列知识:1、8086指令: MOV,ADD,ADC,SUB,SBB,DAA,XCHG2、DEBUG命令: A,D,E,F,H,R,T,U。

3、ASCII码及用16进制数表示二进制码的方法。

4、8086寄存器: AX,BX,CX,DX,F,IP。

内容及步骤:一、DEBUG 命令使用:1、打 DEBUG 进入 DEBUG 控制,显示提示苻 '_ '。

2、用命令 F100 10F 'A' 将'A'的ASCII码填入内存。

3、用命令 D100 10F 观察内存中的16进制码及屏幕右边的ASCII字符。

4、用命令 F110 11F 41 重复上二项实验,观察结果并比较。

5、用命令 E100 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。

二、8086常用指令练习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、了解汇编语言与C语言程序的区别和在设置上的不同;3、了解TMS320VC5402汇编语言程序结果和一些简单的汇编语句用法;4、学习在CCS环境中调试汇编代码。

二、实验设备计算机、DSP硬件仿真器、DSP教学试验箱三、试验背景知识汇编语言程序除了程序中必须使用汇编语句之外,其编译选项的设置与C语言编制的程序也稍有不同。

汇编语言程序在执行时直接从用户制定入口开始,而C语言程序在执行时,先要使用C标准库中的初始化程序(入口标号为“_c_init00”),完成设置之后,才转入用户的主程序main()运行。

四、实验内容1、DSP源文件的建立;2、DSP程序工程文件的建立;3、掌握汇编语言在DSP中的应用;4、掌握在CCS 汇编变量的查看方法。

五、实验步骤1、将DSP仿真器与计算机连接号;2、将DSP仿真器的JTAG插头与DSP试验箱主板上DSP_JTAG相连接;3、打开试验箱电源。

观察SEED-DTK_Moard单元的+5V,+3.3V,+15V,-15V的电源知识灯以及SEED-DEC643的电源指示灯D1是否均亮;若有不亮的,请断开电源,检查电源。

4、运行,设置硬件仿真的环境。

5、运行,按照下列源文件编写test_asm,下载运行例程,观察各个汇编变量结果。

六、实验报告要求1、简述C语言程序和汇编程序在设置上的区别。

2、描述程序实现的功能和原理。

3、记录各个汇编变量的结果。

******************************************************************* * example.asm ******************************************************************** .title "example.asm".mmregsSTACK .usect "STACK",10h ; 为堆栈指定空间.bss a,4 ; 为变量分配9个字的空间.bss x,4.bss y,1.def start.datatable: .word 1,2,3,4 ; 变量初始化.word 8,6,4,2.textstart:STM #0,SWWSR ; 插入0个等待状态STM #STACK + 10h,SP ; 设置堆栈指针STM #a,AR1 ; AR1指向aRPT #7 ; 移动8个数据MVPD table,*AR1+CALL SUM ; 调用SUM子程序end: B endSUM: ; SUM子程序STM #a,AR3 ; 取数组a的首地址STM #x,AR4 ; 取数组x的首地址RPTZ A, #3 ; 下一条语句重复执行4次MAC *AR3+,*AR4+,A ;STL A,@y ; 结果返回给yRET.end***************************************************** vectors.asm 源程序复位向量*****************************************************.title "vectors.asm".ref start.sect ".vectors"B start ; 汇编程序入口.end.cmd文件-e startMEMORY{PAGE 0:EPROM: org = 0x4000, len=0x1000VECS: org = 0x5000, len=0x0080PAGE 1:SPRAM: org = 0x0060, len = 0x0020DARAM: org = 0x0080, len = 0x0100 }SECTIONS{.text :>EPROM PAGE 0.data :>EPROM PAGE 0.bss :>SPRAM PAGE 1STACK :>DARAM PAGE 1.vectors :>VECS PAGE 0}。

汇编语言上机指导

汇编语言上机指导

汇编语言上机指导一、概述汇编语言是一种低级别的程序设计语言,它直接使用计算机的指令集架构来编写程序。

而在进行汇编语言的实际操作时,上机指导是必不可少的一环。

本文将为您提供一份汇编语言上机指导,以帮助您在实践中更好地掌握汇编语言的应用。

二、实验环境与所需工具在进行汇编语言的上机实验之前,您需要准备以下工具和环境:1. 计算机:一台能够运行汇编语言开发环境的计算机;2. 汇编语言开发环境:例如MASM、NASM等;3. 文本编辑器:用于编写汇编源代码的工具,例如Notepad++、Sublime Text等;4. 模拟器或调试器:用于模拟或调试汇编程序的工具,例如DOSBox、Emu8086等。

三、实验步骤1. 安装汇编语言开发环境:根据您选择的汇编语言开发环境,下载并安装相应的软件。

2. 创建汇编源代码文件:使用文本编辑器创建一个新的文本文件,并将其保存为.asm文件格式。

3. 编写汇编程序:根据实验要求或题目要求,使用汇编语言编写相应的程序代码。

在编写过程中,需要熟悉所选汇编语言的语法和指令集。

4. 保存源代码文件:在编写完成后,保存源代码文件,并注意文件的命名规范和格式要求。

5. 编译源代码:打开所选汇编语言开发环境,并将源代码文件导入到该环境中。

使用编译器将源代码文件转换为可执行文件。

6. 运行汇编程序:在模拟器或调试器中加载生成的可执行文件,并运行程序。

通过观察程序的运行结果,验证程序代码的正确性和准确性。

7. 调试程序:如果程序在执行过程中出现错误或异常,可以使用调试器来逐步调试程序,找出错误的原因,并进行修正。

8. 优化程序:经过测试和调试后,可以根据实验需求对程序进行优化或改进,提高程序的性能和效率。

9. 文档整理:在上机实验结束后,对实验过程、实验结果和实验心得进行文档整理。

将实验相关的代码、截图和注释整理成文档,并附上你的实验心得和体会。

四、注意事项1. 在编写汇编程序时,需要遵循所使用汇编语言的语法和规范,注意标识符的命名规则和字符集的使用限制。

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

汇编语言上机实验指导书实验要求:1、上机前作好充分准备,包括程序框图、调试步骤、测试方法、对运行结果的分析等。

2、上机时要遵守实验室的规章制度,爱护实验设备。

要熟悉与实验相关的系统软件(如编辑程序、汇编程序、连接程序和调试程序等)的使用方法。

在程序的调试过程中,有意识地学习及掌握DEBUG程序的各种操作命令,以便掌握程序的调试方法及技巧。

3、为了更好地进行上机管理,要求用硬盘(注:D或E盘下)存储程序,以避免文件丢失。

实验报告(可不用上交老师):实验报告的要求如下:①基本信息。

包括:课程名称、实验名称、专业、班级、姓名、实验时间。

②实验报告编写要规范。

应包括:实验名称、目的、内容、原理、实验步骤、实验记录、数据处理(或原理论证、或实验现象描述、或结构说明等)。

③实验报告应附有实验原始记录和源程序清单。

加强实践能力的培养实验目的不光是为了验证书本理论,更重要的是对实践能力的培养。

其中包括:实际调试程序的能力,例如修改程序参数的能力,查看结果的能力,设置断点调试运行的能力等;开发汇编语言应用程序的能力,例如应用有关汇编软件的能力,进行系统调用和BIOS功能调用的能力,进行模块程序设计的能力等。

对某一问题用不同的程序实现的能力,例如我们为每个实验提供了参考程序(或程序段),目的是让每个实验者参照样板程序将实验成功地实现,在掌握其方法后,自己改变程序或本分改变程序加以实现。

实验一利用DEBUG调试程序调试程序段(选做)1. 实验目的:(1) 熟悉DEBUG有关命令的使用方法(2) 利用DEBUG掌握有关指令的功能(3) 利用DEBUG运行简单的程序段2. 实验内容:(1) 进入和退出DEBUG程序(2) 学会DEBUG中的D命令、E命令、R命令、T命令、A命令、G命令等的使用。

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

(3) 利用DEBUG,验证乘法、除法、加法、减法、带进位加、带借位减、堆栈操作指令、串操作指令的功能。

3. 实验准备(1) 仔细阅读有关DEBUG命令的内容,对有关命令,都要事先准备好使用的例子。

(2) 作为例子,准备用A命令,输入在显示器上显示字符“S”的系统调用程序段。

(3) 阅读将AX左移9位的程序段。

4. 实验步骤(1) 在DOS提示符下,进入DEBUG程序。

(2) 在DOS目录下启动DEBUG。

(3) 详细记录每一步所用的命令,以及查看结果的方法和具体结果。

5. 实验报告要求(1) 如何启动和退出DEBUG程序。

(2) 整理每个DEBUG命令使用的方法,实际示例及执行结果。

(3) 启动DEBUG后,要装入某一个.EXE文件,应通过什么方法实现?实验二分支程序实验(必做)1. 实验目的:(1) 掌握分支程序的设计方法(2) 掌握利用DEBUG修改参数、检查结果的方法。

(3) 掌握汇编语言源程序的编辑、汇编、连接及调试过程。

2. 实验内容(1) 编写一个程序,显示AL寄存器中的两位十六进制数(2) 编写一个程序,判别键盘上输入的字符;若是1-9字符,则显示之;若为A-Z或a-z字符,均显示“c”;若是回车字符<CR>(其ASCII码为0DH),则结束程序,若为其它字符则不显示,继续等待新的字符输入。

3. 实验准备(1) 编写实验内容要求的两个程序。

(2) 写出调试以上程序,即修改程序参数,检查结果的操作方法。

(3) 熟悉源程序汇编、连接命令的使用方法即要回答的内容。

4. 实验步骤(1) 用EDIT或其它编辑软件,编写.ASM源程序,例如HEXASC.ASM及DSPKEY.ASM。

(2) 对其进行汇编及连接,产生.EXE文件。

(3) 对.EXE文件进行调试运行。

a. 用DEBUG调试运行,学会修改AL内容的方法。

b. 对DSPKEY.EXE键入不同的字符,分别进行调试。

c. 在MS-DOS下运行这两个.EXE文件。

5. 实验报告要求画出两个程序的流程图,若要独立编写程序,应列出相应的程序清单。

6. 参考程序清单(1) 显示AL中两位十六进制数程序:;DISPHEX.ASMCODE SEGMENTASSUME CS:CODESTART: MOV AL,3EHMOV BL,ALMOV DL,ALMOV CL,4SHR DL,CLCMP DL,9JBE NEXT1ADD DL,7NEXT1: ADD DL,30HMOV AH,2INT 21H ;显示高位ASCII码MOV DL,BLAND DL,0FHCMP DL,9JBE NEXT2ADD DL,7NEXT2: ADD DL,30HMOV AH,2INT 21H ;显示低位ASCII码MOV AH,4CHINT 21HCODE ENDS ;返回DOSEND START(2) 显示键入字符程序;DISPKEY.ASMCODE SEGEMENTASSUME CS:CODESTART: MOV AH,1INT 21H ;等待键入字符,送ALCMP AL,0DH ;是否是回车符?JZ DONE ;是则转DONE退出程序CMP AL,‟0‟JB NEXTCMP AL,‟9‟JA CHARUPMOV DL,ALMOV AH,2INT 21HJMP STARTCHARUP: CMP AL,41HJB NEXTCMP AL,5AHJA CHRDNDISPC: MOV DL,‟C‟MOV AH,2INT 21HNEXT: JMP STARTCHRDN: CMP AL,61HJB NEXTCMP AL,7AHJA NEXTJMP DISPCDONE: MOV AH,4CHINT 21HCODE: ENDSEND START实验三循环程序实验(必做)1. 实验目的:(1) 掌握循环程序的设计方法(2) 进一步熟悉利用DEBUG程序修改参数的方法,并检查和验证结果的正确性。

(3) 学会针对不同的问题,选用不同的组织循环的方法。

2. 实验内容(1) 编写一个程序,用二进制显示从键盘输入一个字符的ASCII码。

(2) 编写一个程序,记录某个字存储单元数据中1的个数,以十进制形式显示结果。

3. 实验准备(1) 编写实验内容要求的两个程序。

(2) 写出调试以上程序,即修改程序参数,检查结果的操作方法。

(3) 熟悉源程序汇编、连接命令的使用方法即要回答的内容。

4. 实验步骤(1) 用EDIT或其它编辑软件,编写.ASM源程序,例如Binary.ASM及Statistic.ASM。

(2) 对其进行汇编及连接,产生.EXE文件。

(3) 对.EXE文件进行调试运行。

a. 用DEBUG调试运行,学会修改AL内容的方法。

b. 对DSPKEY.EXE键入不同的字符,分别进行调试。

c. 在MS-DOS下运行这两个.EXE文件。

5. 实验报告要求画出两个程序的流程图,若要独立编写程序,应列出相应的程序清单。

6.参考程序段清单:;Binary.asmmov cx,8 ;CX←8(循环次数)again: shl bl,1 ;左移进CF,从高位开始显示mov dl,0 ;MOV指令不改变CFadc dl,30h ;DL←0+30H+CF;CF若是0,则DL←' 0 ';CF若是1,则DL←' 1 'mov ah,2int 21h ;显示loop again;CX减1,如果CX未减至0,则循环;Statistic.ASM;数据段number dw 1110111111100100B;代码段mov bx,numberxor dl,dl ;循环初值:DL←0again: test bx,0ffffh ;也可以用cmp bx,0jz done;全部是0就可以退出循环,减少循环次数shl bx,1 ;用指令shr bx,1也可以adc dl,0;利用ADC指令加CF的特点进行计数jmp againdone: cmp dl,10;判断1的个数是否小于10jb digit ;1的个数小于10,转移push dxmov dl,…1‟;1的个数大于或等于10mov ah,2 ;则要先显示一个1int 21hpop dxsub dl,10digit: add dl,…0‟;显示个数mov ah,2int 21h实验四子程序实验(一)(选做)本实验的目的在于让读者掌握同一模块调用的方法。

1.实验目的(1)掌握主程序与子程序之间的调用关系及调用方法。

(2)掌握子程序调用过程中近程调用与远程调用的区别。

(3)掌握通过堆栈转送参数的方法。

2.实验内容(1)将BUF开始的10个单元中的二进制数转换成两位十六进制数的ASCII码,在屏幕上显示出来。

要求码型转换通过子程序HEXAC实现,在转换过程中,通过子程序DISP实现显示.(2)编写一个主程序,从键盘接收若干个字符,然后用远调用的方法,调用子程序统计字符串中字符‟b‟的个数.子程序的参数是字符串的首地址TABLE,字符串长度N及字符”b”.子程序返回字符"b”的个数.参数传送采用堆栈实现.主程序在子程序返回后,显示字符”b”及其个数(设为一位十六进制数).3.实验说明(1)第一个实验程序用子程序的近程调用实现。

由于在调用HEXASC子程序时,子程序又调用了DISP子程序,这叫子程序的嵌套调用。

实验过程中可以从堆栈的内容看到两个子程序的返回地址值。

由于是近调用,地址值只包括返回地址的段内偏移量。

在每个子程序的执行中,检查CS值是不变的。

(2)第二个程序是利用远调用的方法调用子程序的。

在远调用情况下,主程序与子程序处在不同的逻辑代码段中,可在子程序执行中查看CS值,它与主程序中的CS值是不同的。

子程序调用后,堆栈中保留了返回地址的段地址及段内偏移量。

(3)第二个程序中,主程序与子程序之间参数的传送是由堆栈实现的。

一段是将参数(此处是串首址TABLE,串的长度N及待统计的字符“b”)顺序压如堆栈,在子程序调用后,通过BP指针对堆栈中的参数访问,并将统计的结果通过堆栈返回。

有关该方法的原理此处不再介绍。

4.实验准备(1)预习子程序设计的基本方法,根据实验内容要求,画出子程序及主程序的流程图。

(2)熟悉键盘键入字符串及用堆栈传送参数的程序段编制方法。

5.实验步骤(1)编辑、汇编两个源程序,生成相应的可执行文件(。

EXE)(2)用DEBUG的R 命令,T 命令或G命令和D命令检查远程调用及近程调用时堆栈的变化。

特别是通过堆栈传送的参数和子程序取出的参数是返回参数的详细过程。

(3)检查程序执行的结果是否正确。

6.实验报告要求(1)分析远程调用与近程调用的区别,在用DEBUG有关命令观察时,执行过程有何不同。

(2)说明用堆栈传送参数的过程及其具体方法。

(3)分析实验结果及所遇到问题,并说明解决的方法。

相关文档
最新文档