汇编实验报告2-1
汇编实验2-循环程序设计-实验报告

汇编实验2-循环程序设计-实验报告一、实验目的1、了解循环程序设计的方法2、理解汇编语言中循环指令的使用3、掌握汇编语言中常用的循环结构二、实验原理1、循环指令循环指令是计算机中常用的一种控制结构,其作用是重复执行一定的操作。
在汇编语言中,常用的循环指令有LOOP、LOOPE、LOOPNE等,具体功能如下:(1)LOOP:重复执行指定次数的操作;(2)LOOPE:执行操作直到CX寄存器为0或ZF寄存器为1;(3)LOOPNE:执行操作直到CX寄存器为0或ZF寄存器为0。
LOOP指令的语法格式如下:LOOP label其中,label表示循环的目标地址。
2、循环结构循环结构是计算机程序设计中常用的一种结构,其基本形式包括:while、do...while、for等。
在汇编语言中,常用的循环结构有以下两种:(1)无限循环结构:该结构适用于需要不停顿地进行某项操作的情况,底层逻辑基于测试指令;(2)计数器循环结构:该结构适用于需要循环指定次数的情况,底层逻辑基于循环指令。
三、实验内容1、使用循环指令实现计算1~10的和;2、使用循环结构实现计算1~10的和。
四、实验步骤1、使用循环指令实现计算1~10的和。
(1)将计数器初始化为10,即MOV CX,10;(2)将累加器初始化为0,即MOV AX,0;(3)将当前计数器值加到累加器中,即ADD AX,CX;(4)将计数器减1,即DEC CX;(5)判断计数器是否为0,若不为0,则执行第3步;若为0,则跳转到计算结果的部分。
2、使用循环结构实现计算1~10的和。
(1)将计数器初始化为10,即MOV CX,10;(2)将累加器初始化为0,即MOV AX,0;(3)将当前计数器值加到累加器中,即ADD AX,CX;(4)将计数器减1,即DEC CX;(5)判断计数器是否为0,若不为0,则执行第3步;若为0,则跳转到计算结果的部分。
五、实验结果(1)使用循环指令实现计算1~10的和MOV CX,10MOV AX,0LOOP label1ADD AX,CXDEC CXJNZ label1label1:MOV sum,AX(2)使用循环结构实现计算1~10的和MOV CX,10MOV AX,0label2:ADD AX,CXDEC CXJNZ label2MOV sum,AX六、实验总结本次实验实现了两种不同的循环方式,分别使用了循环指令和循环结构。
汇编语言实验报告

合肥工业大学实验报告课程:汇编语言程序设计专业班级:学号:姓名:实验一Debug程序的使用一. 实验目的1、熟悉DEBUG程序中的命令,学会在DEBUG下调试运行汇编语言源程序。
2、掌握8086/8088的寻址方式及多字节数据的处理方法。
二. 实验内容1、利用DEBUG程序中的“E”命令,将两个多字节数“12345678H”和“FEDCBA98H”分别送入起始地址为DS:0200H和DS:0204H两个单元中。
2、分别用直接寻址方式和寄存器间接寻址方式编写程序段,实现将DS:0200H 单元和DS:0204H单元中的数据相加,并将运算结果存放在DS:0208H单元中。
要求:本次实验的内容均在DEBUG下完成,实现数据的装入、修改、显示;汇编语言程序段的编辑、汇编和反汇编;程序的运行和结果检查。
三. 实验过程和程序基础题:1、利用DEBUG程序中的“E”命令,将两个多字节数“12345678H”和“FEDCBA98H”分别送入起始地址为DS:0200H和DS:0204H两个单元中。
2、分别用直接寻址方式和寄存器间接寻址方式编写程序段,实现将DS:0200H单元和DS:0204H单元中的数据相加,并将运算结果存放在DS:0208H单元中。
附加题:1. 从DS:0000H开始的5个16位带符号数分别记为x,y,z,v,w,用E命令初始化为:540,1,-1,1080,0, 试求w=(v-(x*y+z-540))/x2. 完成BX中1的个数的统计。
3. 用串操作指令将DS:0000开始20个字节初始化为:0CCH。
并将这20个字节的内容复制到其后的20个字节里。
四. 实验结果(包括必要的截图)基础题 1:基础题 2:附加题 1:附加题 2:附加题 3:五. 实验体会1. 在汇编语言中,变量的其实都是地址。
2. 在Debug中,数值都是16进制的。
3. 在读写内存中的数据时,必须指出数据类型是byte还是word。
汇编指令实验报告

汇编指令实验报告汇编指令实验报告汇编指令是计算机中非常重要的一部分,它们直接操作着计算机的硬件,实现各种功能。
在本次实验中,我们学习了汇编指令的基本知识,并通过实践掌握了它们的使用方法。
本文将对我们的实验过程进行详细的总结和分析。
实验一:汇编指令的基本概念和使用方法在实验的第一部分,我们首先了解了汇编指令的基本概念和使用方法。
汇编指令是一种低级语言,它直接操作计算机的寄存器和内存单元。
我们通过学习不同的指令集和指令格式,了解了如何使用汇编指令来实现各种功能。
在实验中,我们使用了一款常见的汇编语言工具,例如MASM(Microsoft Macro Assembler)和NASM(Netwide Assembler)。
通过这些工具,我们可以将汇编代码转换成可执行的机器码,并在计算机上运行。
实验二:汇编指令的应用实例在实验的第二部分,我们通过一些实际的应用实例,进一步加深了对汇编指令的理解和掌握。
我们学习了如何使用汇编指令来实现字符串处理、数学运算、条件判断等常见的功能。
例如,我们学习了如何使用汇编指令来实现字符串的反转功能。
通过对字符串的每个字符进行逆序排列,我们可以实现字符串的反转。
这个实例不仅帮助我们理解了汇编指令的基本操作,还锻炼了我们的逻辑思维能力。
实验三:汇编指令的性能优化在实验的第三部分,我们探讨了如何通过优化汇编指令来提升程序的性能。
通过对程序的瓶颈进行分析,我们可以找到一些可以改进的地方,并通过修改和优化汇编指令来提升程序的执行效率。
例如,我们学习了如何通过使用SIMD(Single Instruction Multiple Data)指令集来实现并行计算。
通过同时对多个数据进行操作,我们可以大大提高程序的运行速度。
这个实例不仅帮助我们理解了汇编指令的高级应用,还培养了我们的优化思维能力。
实验四:汇编指令的错误处理和调试技巧在实验的第四部分,我们学习了如何处理汇编指令中的错误,并掌握了一些常用的调试技巧。
汇编实验报告

实验一(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、掌握循环结构程序的设计、子程序的设计及调试技巧与方法。
2、加深对循环结构的理解。
3、熟练掌握DEBUG的常用指令,学会用DEBUG调试程序。
4、掌握子程序的结构和使用方法。
5、加深对于循环指令的使用和理解。
二、实验环境操作系统:Windows XP软件名称:Editplus3.0,MASM5.0实验地点:综合楼311三、实验的预习内容实验四:单重循环程序设计实验预习内容:在实验前要了解循环程序的组成结构,要着重了解循环控制指令、串操作指令和操作功能,以及在循环控制过程中寄存器的使用,这样便于在程序中操作寄存器,为我们的编程提供了巨大的便利。
我们还需要掌握分支跳转的指令,虽然本实验是单重循环的实验,但仍然需要分支结构来实现跳转。
我们还需要掌握编制循环控制结构的技巧。
实验五:多重循环程序设计实验预习内容:在实验前应该了解多重循环结构的特点,掌握单重循环和多重循环的汇编指令的使用方法,以及各指令中寄存器的使用情况,这样在编写程序时可以更加灵活的使用寄存器。
我们还应该了解编制多重循环结构的技巧。
实验六:子程序及宏指令设计实验预习内容:在实验前要了解子程序和宏指令的定义,了解有关子程序和宏指令的使用方法,以及子程序和宏指令的调用方法。
四、实验的步骤与调试方法(1)单重循环程序设计实验实验步骤:首先,我将5个数字存储到DATA1的连续单元里,将数字的个数存储到CNT当中。
之后,我在代码段当中,取出DATA1中的数据,将其与100相比,如果两个数相等就输出Y,如果没有,则继续取出下一个数据,直到将所有的数据都比较完,如果都不相等的话则输出N。
对于使用字符串指令来实现该功能,大体原理相同,主要区别为使用了搜索字符SCASB。
异常与调试方法:1、在实验中,发现每次的结果都不正确,部分代码如下:DSEG SEGMENT ;定义数据段DATA1 DW 1,2,3,100CNT DW 4DSEG ENDS经过分析发现,单个数据定义为了字类型,数的大小和性质不对,在声明一组数放在一个地址空间中,我们应该将其定义为字节类型的数据。
汇编实验报告(实验二)

实验二循环与子程序程序设计一、实验目的1)加深对循环结构的理解。
2)掌握循环程序的设计方法。
3)学习子程序的定义和调用方法。
4)掌握子程序、子程序的嵌套、递归子程序和结构。
5)掌握子程序设计、编制及调试。
6)熟练掌握DEBUG的常用命令,学会用DEBUG调试程序。
二、实验内容3)编制在屏幕上显示九九乘法表的程序。
4)编制在屏幕上显示用*组成的三角形的程序。
6)编写一个递归子程序,计算指数函数Xn的值,其中X,n从键盘输入。
三、程序内容3)data segmentdata endscode segmentassume cs:code;ds:datastart:mov ax,datamov ds,axmov bl,30hmov bh,31hmov cl,blone:add bl,1mov dl,blmov ah,2int 21hmov dl,'*'mov ah,2int 21hmov dl,bhmov ah,2int 21hmov dl,'='mov ah,2int 21hand bl,0fhand bh,0fhmov al,bhimul blmov ah,0hmov ch,0ahidiv chmov dh,ahadd al,30hcmp al,30hjz threetwo:mov dl,almov ah,2hint 21hadd dh,30hmov dl,dhmov ah,2int 21hadd bl,30hadd bh,30hmov dl,20hmov ah,2int 21hcmp bl,bhjl onemov dl,0ahmov ah,2int 21hmov dl,0dhmov ah,2int 21hmov bl,cladd bh,1hcmp bh,3ahjl onejmp exitthree:mov al,20hjmp twoexit:mov ah,4chint 21hcode endsend start4)code segmentassume cs:code,ds:data,ss:stackstart:mov al,1mov bl,1l:add al,30hmov dl,almov ah,02hint 21hpush ax mov dl,'*' mov ah,02h int 21hpop ax push axadd bl,30h mov dl,bl mov ah,02h int 21hpop ax push ax mov dl,'=' mov ah,02h int 21hpop axsub al,30h sub bl,30h push bx push axmul blcall result mov dl,' ' mov ah,02h int 21hpop axpop bxinc alcmp al,bl jbe lmov dl,0ah mov ah,02h int 21hmov dl,0dh mov ah,02h int 21hcmp bl,8ja kmov al,1inc bljmp lk:mov ah,4ch int 21hresult:mov cx,0 aaaa:mov bx,10mov dx,0div bxpush dxinc cxmov dx,0cmp ax,0jne aaaabbbb:pop bxjmp lastcccc:last:cmp bx,39hja aboveadd bl,30hmov dl,blmov ah,02hint 21hloop bbbbretabove:add bx,37hmov dl,blmov ah,02hint 21hloop bbbbcode endsend start四、实验结果3)4)。
汇编基本命令实验报告

1、实验目的
1.熟悉汇编语言编程环境;掌握debug用法及常用命令
二、实验内容
1.熟悉debug功能,并分别使用debug命令字查看/修改CPU和内容。
R命令:修改、查看CPU中寄存器的内容;
图2.1
图2.2
D命令:查看内存中内容;
图2.3
E命令:修改内存中内容;
图2.4
U命令:反汇编;
图2.5
T命令:执行CS:IP指向的内存单元处的指令;
A命令:以汇编指令的形式向内存中写入指令;
2.使用A和T命令进行汇编指令操作,将下面程序段写入内器中内存,逐条执行,并观察每条指令执行后CPU中相关寄存的变换。
MOV AX,4E20
ADD AX,1416H
MOV BX,2000H
ADD AX,BX
MOV BX,AX
ADD AX,BX
MOV AX,001AH
MOV BX,0026H
ADD AL,BL
ADD AH,BL
ADD BH,AL
MOV AH,0
ADD AL,BL
ADD AL,9CH
图2.6
图2.7
3.将下面3条指令写入从2000:0开始的内存单元中,利用这3条指令计算2的8次方。
MOV AX,1
ADD AX,AX
JMP 2000:0003
图2.8
4.验证指令格式,并判断指令格式是否正确,如
操作码(MOV,ADD,SUB)寄存器,作码段寄存器,存储器
操作码存储器,段寄存器
图2.9
汇编上机实验报告

实验一认识Tddebug集成操作软件实验日志指导教师曾素华实验时间:2013 年04 月02 日学院计算机科学与技术专业计算机科学与技术班级0411005 学号2010211912 姓名李新娱实验室s401一、实验题目认识Tddebug集成操作软件二、实验目的1.熟悉汇编程序的开发过程。
2.认识Tddebug集成操作软件。
3.掌握在Tddebug集成环境中编辑、编译、连接汇编语言程序方法。
4.掌握INT 21H软件中断来调用DOS内部子程序的方法三、实验内容及说明1.实验内容:数据传送实验1)编程将数据段中的一个字符串传送到附加段中,并输出附加段中的目标字符串到屏幕上。
参见示例出程序。
2)修改此程序,采用字符串传送指令完成。
2.实验中使用DOS功能调用(INT 21H):参见教材《32位微型计算机原理与接口技术》89页(1)显示字符串入口:AH=09H调用参数:DS:DX=串首地址,‘$’为结束字符。
(2)返回DOS系统入口:AH=4CH调用参数:AL=返回码四、实验主要步骤要求一数据传送实验1.运行Tddebug软件,选择Edit菜单编写实验程序2.使用Compile菜单中的Compile和Link对实验程序进行汇编、连接,生成执行文件。
3.使用Rmrun菜单中的Run运行程序,观察运行结果。
4.使用Rmrun菜单中的Debug调试程序,查看程序段、数据段、附加段装入内存后的分配情况。
单步执行数据传送指令后,观察各寄存器及数据区的内容。
过程如下:3)按F7单步执行,在代码区中有一个三角,表示正在执行的指令。
每一条指令的执行一定会使目标寄存器和状态寄存器发生变化,从相关窗口看结果。
4)检查内存数据区的内容,关键是找出用户程序的数据段和附加段:●方法1:在CPU窗口按Tab键使内存数据显示区成为活动区,按Ctrl+G键,输入:“DS或ES寄存器的值:偏移地址”,即可显示用户指定的数据区●方法2:选择菜单View| Dump,弹出内存数据显示窗口。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《汇编语言程序设计》第二次上机2-1实验报告院系:计算机科学与技术专业:信息安全班级:0903班姓名:学号:时间:2011-6-6地点:南一楼808一、实验目的 (3)二、题目与实验要求 (3)三、寄存器分配和变量定义说明: (3)四、流程图 (5)五、源程序及注释 (7)六、实验步骤 (13)七、实验记录 (13)八、体会 (16)一、实验目的1、加深对一些常用的汇编指令的理解;2、加深对常用DOS功能调用指令的理解;3、进一步熟悉TD的使用。
二、题目与实验要求1、《80X86汇编语言程序设计》教材中 P95的 3.7 题。
要求:(1)将该题改成一完整的程序(可以省略实验报告中的程序框图)。
(2)请事先指出依次执行每条程序指令后(AX)的内容。
(3)请事先指出执行ADD、SUB、SAL、RCL指令后,CF、ZF的值。
(4)记录上机执行后与(2)、(3) 中对应的内容。
2、《80X86汇编语言程序设计》教材中 P94的 3.3 题。
要求:(1)将该题改成一完整的程序,其中数据段的定义为习题3.1中的数据段(可以省略实验报告中的程序框图)。
(2)请事先画出数据段中数据的存储形式。
(3)请事先指出依次执行每条程序指令后相应寄存器中的内容。
(4)请事先给出各调指令在汇编后的形式。
(5)比较上机执行后,看到的各项内容是否与(2)、(3) ,(4)内容一致。
不一致的应分析错误原因。
3、《80X86汇编语言程序设计》教材中 P96的 3.11 题。
要求:(1)请事先指出程序运行结束后,显示器显示的内容。
(2)若将NUM的定义改成如下形式:NUM DB 35显示的结果是什么?(3)若将NUM的定义改成如下形式:NUM DB 59显示的结果是什么?(4)指出程序运行后看到的结果,若不一致,分析产生错误的原因。
4. 从键盘输入两串字符分别存入BUF1和BUF2区,比较两串内容是否相等,相等显示“MATCH !”, 不相等显示“NO MATCH !”。
要求:(1) 使用10号功能调用输入字符串;(2) 使用9号功能调用输出提示信息;提示:先比较长度是否相等。
5 选做题输入一个无符号的数字串,然后以16进制形式显示出串的值。
例如:INPUT A NUMBER : 59RESULT : 3BH其中下划线上的内容(59)为程序运行时输入的串。
三、寄存器分配和变量定义说明:题目31. 存储单元分配:NUM为一个定义在数据段中的字节变量,存储一个二进制数BUF为一个定义在数据段中的字节变量,存储回车换行与提示信息BUF0为一个定义在数据段中的字节变量,存储一个十六进制数2.寄存器分配:DI存储BUF0中某个字节的地址,用于寄存器间接寻址AL存储NUM中二进制数高四位与低四位对应的数字的ASCII码题目41. 存储单元分配:BUF1、BUF2为两个定义在数据段中的字节变量,存储输入的字符串信息 BUF3为一个定义在数据段中的字节变量,回车换行BUF4、BUF5为两个定义在数据段中的字节变量,存储提示信息2.寄存器分配:BX作为变址寻址寄存器使用题目5(选做题)1. 存储单元分配:STR1、STR2为两个定义在数据段中的字节变量,存储提示信息BUF1为一个定义在数据段中的字节变量,存储输入的字符串信息BUF2为一个定义在数据段中的字节变量,回车换行2. 寄存器分配:AX存储输入的字符串对应的数字CX用作计数器,控制循环次数DI用作变址寻址的变址寄存器四、流程图题目4题目5(选做题)五、源程序及注释题目1.386DATA SEGMENT USE16BUF DB ?DATA ENDSSTACK SEGMENT USE16 STACKDB 200 DUP(0)STACK ENDSCODE SEGMENT USE16ASSUME DS:DATA, SS:STACK, CS:CODE START:MOV AX, DATAMOV DS, AXMOV AX, 0DEC AXADD AX, 07FFFHADD AX, 2NOT AXSUB AX, 0FFFFHADD AX, 8000HOR AX, 0BFDFHAND AX, 0EBEDHXCHG AH, ALSAL AX, 1RCL AX, 1MOV AH, 4CHINT 21HCODE ENDSEND START题目2.386DATA SEGMENT USE16STR1 DB 0,1,2,3,4,5STR2 DB '012345'COUNT EQU 30NUMB DB 3 DUP(2)NUMW DW 10H,-60HPOIN DW 0DATA ENDSSTACK SEGMENT USE16 STACKDB 200 DUP(0)STACK ENDSCODE SEGMENT USE16ASSUME DS:DATA, SS:STACK, CS:CODE START:MOV AX, DATAMOV DS, AXMOV BX, OFFSET STR1+3MOV SI, OFFSET STR2MOV CL, COUNTMOV DX, WORD PTR NUMBMOV BP, NUMW+2MOV AL, 3[SI]MOV AH, [SI+BX+1]MOV CH, BYTE PTR NUMW+3MOVSX EAX,AXMOV AH, 4CHINT 21HCODE ENDSEND START题目3.386A1 SEGMENT USE16NUM DB 00111001BBUF DB 0AH,0DH,'(NUM)='BUF0 DB 4 DUP(?)A1 ENDSB1 SEGMENT USE16 STACKDB 200 DUP(0)B1 ENDSC1 SEGMENT USE16ASSUME DS:A1, SS:B1, CS:C1 BEGIN:MOV AX, A1MOV DS, AXLEA DI, BUF0MOV AL, NUMSHR AL, 4OR AL, 30HMOV [DI],ALINC DIMOV AL, NUMAND AL, 0FHOR AL, 30HMOV [DI],ALINC DIMOV BYTE PTR [DI],'H'INC DIMOV BYTE PTR [DI],'$'LEA DX, BUFMOV AH, 9INT 21HMOV AH, 4CHINT 21HC1 ENDSEND BEGIN题目4.386DATA SEGMENT USE16BUF1 DB 60DB ?DB 60 DUP(?)BUF2 DB 60DB ?DB 60 DUP(?)BUF3 DB 0DH,0AH,'$'BUF4 DB 'MATCH !$'BUF5 DB 'NO MATCH !$'DATA ENDSSTACK SEGMENT USE16 STACKDB 200 DUP(0)STACK ENDSCODE SEGMENT USE16ASSUME DS:DATA, CS:CODE, SS:STACKSTART:MOV AX, DATAMOV DS, AXLEA DX, BUF1MOV AH, 10INT 21HLEA DX, BUF3MOV AH, 9INT 21HLEA DX, BUF2MOV AH, 10INT 21HLEA DX, BUF3MOV AH, 9INT 21HXOR BH, BHMOV BL, BUF1[1] ;BUF1中的字符串长度存入BLMOV CL, BUF2[1] ;BUF2中的字符串长度存入CLCMP BL, CL ;比较两字符串长度JNE NOINC BLLOOP1: MOV CL, BUF1[BX]CMP CL, BUF2[BX] ;比较相同位置的字符是否相同JNE NODEC BLCMP BL, 1 ;判断字符串是否比较完毕JNE LOOP1LEA DX, BUF4MOV AH, 9INT 21HJMP EXITNO: LEA DX, BUF5MOV AH, 9INT 21HEXIT: MOV AH, 4CHINT 21HCODE ENDSEND START题目5(选做题).386DATA SEGMENT USE16STR1 DB 'INPUT A NUMBER: $'STR2 DB 'RESULT: $'BUF1 DB 60DB ?DB 60 DUP(0)BUF2 DB 0DH,0AH,'$'DATA ENDSSTACK SEGMENT USE16 STACKDB 200 DUP(0)STACK ENDSCODE SEGMENT USE16ASSUME CS:CODE, SS:STACK, DS:DATASTART:MOV AX, DATAMOV DS, AXLEA DX, STR1MOV AH, 9INT 21HLEA DX, BUF1INT 21HLEA DX, BUF2MOV AH, 9INT 21HLEA DX, STR2MOV AH, 9INT 21HXOR AX, AXXOR CH, CHXOR DX, DXMOV CL, BUF1[1] ;数字字符串长度存入CLMOV BX, 10MOV DI, 2LOOP1: MUL BX ;开始将字符串转化为十进制数存入AX MOV DL, BUF1[DI]SUB DX, 30HADD AX, DXXOR DX, DXINC DILOOP LOOP1MOV BX, 16LOOP2: INC CXDIV BXCMP DX, 10 ;判断是否小于10JL JMP1ADD DX, 7JMP1: ADD DX, 30H ;转化为对应的十六进制数PUSH DXXOR DX, DXCMP AX, 0JNE LOOP2LOOP3: POP DXMOV AH, 2INT 21H ;从高位至低位依次输出十六进制数LOOP LOOP3MOV AH, 2 ;输出字母HINT 21HMOV AH, 4CHINT 21HCODE ENDSEND START六、实验步骤1. 存盘文件名依次为1-1.ASM、1-2.ASM、1-3.ASM、1-4.ASM、1-5.ASM。
2. 使用MASM5.0汇编源文件。
3. 观察提示信息,若出错,则用编辑程序修改错误,存盘后重新汇编,直至不再报错为止。
4. 使用连接程序LINK.EXE将汇编生成的OBJ文件连接成执行文件。
5. 若连接时报错,则依照错误信息修改源程序。
之后重新汇编和连接,直至不再报错并生成EXE文件。
6. 执行该程序,观察执行现象。