汇编实验报告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. 掌握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命令检查键入的程序及对应的机器码。
汇编语言(第2版)王爽著-课后实验报告详解
汇编语言实验报告:班级学号 学生姓名 提交日期成 绩实验1-1如下:用E命令将指令写入内存:用A命令将指令写入内存:实验1-2代码如下:用a命令在2000:0000处写如要写如的代码,然后用R命令来修改CS为2000,IP修改为0,然后用T命令执行,直到AX中的值为10,因为是默认为十六进制,所以ax中的0010实际代表十进制的16。
如图:实验1-3:用D命令输入内存fff0h~fffffh,则可看到:生产日期为06/15/09在地址为FFFF5~FFFF12处,现在用E命令随便修改一下有:在window7下虚拟的dos中可以改,但如果重新打开dos中的debug 则日期任然不会改变,因为那是ROM。
实验1-4代码如下:内存地址为B800:0开始的为显存,是RAM,可以改变其值来在屏幕中显示,其中这一个字符占两个字节,前一个(低)为字符的ASCII 码,后一个(高)为要显示的颜色,内存B800:0和B800:1这两个字节对应着屏幕中的第一个字符的位置,依次类推,每个屏幕的行有80个字符,对应的内存占160个字节实验2-1:(按实验结果填空)Mov ax,ffffMov ds,axMov ax,2200Mov ss,axMov sp,0100Mov ax,[0] ;ax=5BEAAdd ax,[2] ;ax=5CCAMov bx,[4] ;bx=30F0Add bx,[6] ;bx=6026Push ax ;sp=00FE; 修改的内存单元的地址是2200:00FE 内容是5CCA Push bx ;sp=00FC; 修改的内存单元的地址是2200:00FC内容是6026 Pop ax ;sp=00FE; ax=6026.Pop bx ;sp=0100; bx=.5CCAPush [4] ;sp=00FE; 修改的内存单元的地址是2200:00FE内容是30F0 Push [6] ;sp=00FC; 修改的内存单元的地址是2200:00FC内容是2F36 实验截图如下:实验2-2(分析问答实验)答:因为T命令是单步中断,我们在后面学习后知道,CPU执行中断时会保留现场,即将标志寄存器,CS,IP等入栈,而实验中栈的地址正好是要查询的内存地址,所以即便未对内存单元进行写入命令,但里面的值会因为CPU要保留现场自动被改了实验3(1)代码:ASSUME CS:CODES CODES SEGMENT START:mov ax,2000hmov ss,axmov sp,0add sp,10pop axpop bxpush axpush bxpop axpop bxMOV AH,4CHINT 21HCODES ENDSEND START (2)debug跟踪:(3)用debug跟踪查看PSP中的内容:可见PSP的头两个字节是CD 20,与书上的一致实验4-1代码如下:ASSUME CS:CODESCODES SEGMENTSTART:mov ax,0mov ds,axmov bx,200hmov cx,64s: mov [bx],alinc alinc bxloop sMOV AH,4CHINT 21HCODES ENDSEND START实验4-1运行图如下:实验4-2代码如下:ASSUME CS:CODESCODES SEGMENTSTART:mov ax,200hmov ds,axmov bx,0mov cx,64s: mov [bx],bxinc bxloop sMOV AH,4CHINT 21HCODES ENDSEND START运行结果同实验4-1的一样实验4-3(补全代码)ASSUME CS:CODESCODES SEGMENTSTART:mov ax,csmov ds,axmov ax,20hmov es,axmov bx,0mov cx,16hs: mov al,[bx]mov es:[bx],alinc bxloop sMOV AH,4CHINT 21HCODES ENDSEND START因为要将代码复制到0:200处,则必须知道代码的地址,和代码的长度,代码的地址在cs和IP中,代码的长度可以编译后用U命令查看后确定,这个之前随便打一个数就可以,不影响代码的长度,因为那个数占的空间和真实的长度一样,所以用U命令后在改过来即可实验4-3的运行图如下:实验5-1代码如下:DA TAS SEGMENTdw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987hDA TAS ENDSSTACKS SEGMENTdw 0,0,0,0,0,0,0,0STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DA TAS,SS:STACKSSTART:MOV AX,stacksMOV ss,AXmov sp,16mov ax,datasmov ds,axpush ds:[0]push ds:[2]pop ds:[2]pop ds:[0]MOV AH,4CHINT 21HCODES ENDSEND START实验5-1运行图如下:①CPU执行程序后,程序返回前,data段中的数据为多少?答:不变如上图②CPU执行程序后,程序返回前,CS=144Ch,SS=144Bh,DS=144Ah。
汇编语言编程实验报告
汇编语言编程实验报告学号:姓名:成绩:目录一、实验一: ......................................................错误!未定义书签。
二、实验二: (4)三、实验三: (8)四、实验四: (10)五、实验五: ......................................................错误!未定义书签。
六、实验六: (19)七、汇编实验总结 (23)实验一一. 实验题目【汇编语言补充作业T20T20】编写完整程序,利用】编写完整程序,利用DOS 系统功能调用,从键盘输入一个字符串,并将该字符串从屏幕上换行后并输出。
二. 程序流程及思路实现字符串输入,需要分成三个步骤:实现字符串输入,需要分成三个步骤:1、在数据段中定义一个缓存区为存放字符串做准备;2、DOS 系统功能调用0AH 号子功能,(DS:DX DS:DX))= = 输入缓冲区首址;输入缓冲区首址;输入缓冲区首址;3、在输入的字符串尾加上‘、在输入的字符串尾加上‘$$’字符,以作为输出结束条件。
’字符,以作为输出结束条件。
实现字符串输出,则需要注意的问题是:实现字符串输出,则需要注意的问题是:1、缓冲区第三个字节才开始存放输入的字符,前两个字节分别存放缓冲区长度和字符串实际字符数;和字符串实际字符数;2、输出回车换行可利用字符串:、输出回车换行可利用字符串:CR DB 0AH,0DH,CR DB 0AH,0DH,CR DB 0AH,0DH,’’$’。
’。
三. 源程序清单DATA SEGMENTN EQU 50MAXLEN DB N ;MAXLEN DB N ;缓冲区字符的最大长度缓冲区字符的最大长度缓冲区字符的最大长度ACTLEN DB ? ;ACTLEN DB ? ;实际字符个数实际字符个数实际字符个数STRING DB N DUP(?) ;STRING DB N DUP(?) ;字符空间字符空间字符空间CR DB 0AH,0DH,'$'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART: 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(注:以下程序采用b方法)方法)。
汇编实验报告一实验总结
汇编实验报告一实验总结
实验报告一:汇编实验总结
实验目的:通过汇编实验,掌握汇编语言的基本语法和编程技巧,加深对计算
机底层工作原理的理解。
实验过程:在实验中,我们首先学习了汇编语言的基本语法和指令格式,包括
寄存器的使用、内存地址的访问、算术运算和逻辑运算等。
随后,我们进行了
一系列的编程练习,包括编写简单的程序来实现加法、乘法、比较大小等功能。
在实验的最后阶段,我们还学习了如何调用系统中断来实现输入输出操作。
实验结果:通过本次实验,我们深入了解了汇编语言的编程技巧和应用场景。
我们不仅掌握了汇编语言的基本语法,还学会了如何编写简单的汇编程序来实
现一些基本的功能。
同时,通过实验,我们对计算机底层的工作原理有了更深
入的理解,对计算机系统的运行机制有了更清晰的认识。
实验总结:本次汇编实验让我们深入了解了汇编语言的基本知识和编程技巧,
为我们今后的学习和工作打下了坚实的基础。
通过实验,我们不仅学会了如何
使用汇编语言编写程序,还对计算机系统的底层工作原理有了更深入的理解。
希望在今后的学习和工作中,我们能够继续深入研究汇编语言,不断提高自己
的编程水平,为计算机科学技术的发展贡献自己的力量。
汇编语言实验报告2 - 寻址方式的综合应用及转移指令的原理
一、实验目的1.定位内存单元的寻址方式汇总2.寻址方式的综合应用3.转移指令的分类和原理4.熟悉在显存中编程的方法二、实验内容及要求(一)寻址方式的汇总及综合应用1. 定位内存单元的寻址方式有几种,并举例说明。
2. 寻址方式在结构化数据访问中的应用。
Power idea公司从1975年成立一直到1995年的基本情况如下。
年份收入(千美元) 雇员人均收入(千美元) 1975 16 3 ?1976 22 7 ?1977 382 9 ?1978 1356 13 ?1979 2390 28 ?1980 8000 38 ?M1995 5937000 17800 ?下面的程序中,已经定义好了这些数据:assume cs:codesgdata segmentdb '1975','1976','1977','1978','1979','1980','1981','1982','1983'db '1984','1985','1986','1987','1988','1989','1990','1991','1992'db '1993','1994','1995';年份dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514dd345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000 ;公司总收入dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226 dw 11542,14430,15257,17800;公司雇员人数data endstable segmentdb 21 dup('year summ ne ??')table ends编程,将data段中的数据按如下格式写入到table段中,并计算21年中的人均收入(取整),结果也按照下面的格式保存在table段中。
汇编实验一 实验报告
实验一查看CPU和内存用机器指令和汇编指令编程
一、实验目的
1.掌握debug的使用方法,会用基本的D,R命令查看、显示内存和寄存器
2.了解汇编指令编程的方法。
二、实验任务
1检查在存储器低端的BIOS数据区的内容。
(1)检查串行与并行端口
(2)检查系统设备
(3)检查键盘Shift状态
(4)检查显示状态
2 考察ROM BIOS
目的:检查在存储器高端的ROM BIOS中的数据。
(1)检查版本通告
(2)检查ROM BIOS数据
3.用D、R命令查看、显示内存和寄存器,可对寄存器内容进行修改。
三、实验结果及分析
1、检查在存储器低端的BIOS数据区的内容
(1)检查串行与并行端口
说明:检查后发现有四个串行端口,分别是03F8、02F8、03E8、02E8;并行端口也有四个,分别是03BC、03BC、0378、0278、9FC0
(2)检查系统设备
(3)检查键盘Shift状态
(4)检查显示状态
2、考察ROM BIOS (1)检查版本通告
(2)检查ROM BIOS数据
3、用D、R命令查看、显示内存和寄存器,可对寄存器内容进行修改
四、实验总结(心得、体会)
1、通过对检查在存储器低端的BIOS数据区的内容的查看,可以了解计算机的各种状态,而考察ROM BIOS可以鉴定计算机的出厂信息。
2、通过用D、R命令查看、显示内存和寄存器,可以了解计算机运行的过程步骤,并且可以通过偏移地址读取内容。
3、在读取时需要注意的是,在DEBUG显示中是低位至高位的显示,而我们需要的是高位至低位的显示方式,所以在操作时对于双字节的读取,需要将前后字节地址内容互换。
汇编语言编程实验报告
汇编语言编程实验报告汇编语言程序设计实验报告(一)汇编语言程序设计实验报告(一)一、预备知识汇编语言程序设计是一门实践性很强的课程。
编写程序、上机调试、运行程序是进一步学习和掌握汇编语言程序设计的必要手段。
二、实验目的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文件只是个文本文件,计算机无法执行。
汇编 实验报告
汇编实验报告汇编实验报告引言:汇编语言是一种低级语言,用于编写计算机程序。
在计算机科学领域中,汇编语言是一门重要的学科,它可以帮助我们更深入地了解计算机的内部工作原理。
本实验报告将介绍我在学习汇编语言过程中的实验经历和所学到的知识。
实验一:汇编语言的基本概念在本实验中,我首先学习了汇编语言的基本概念。
汇编语言是一种用于编写机器指令的低级语言,它直接操作计算机的硬件。
通过学习汇编语言,我了解了计算机内存、寄存器、指令和数据的存储方式,并学会了如何编写简单的汇编程序。
实验二:汇编语言的数据表示在这个实验中,我学习了汇编语言中的数据表示方法。
汇编语言中的数据可以用不同的方式表示,例如二进制、十进制和十六进制。
我还学习了如何使用数据寄存器和内存寻址来处理不同类型的数据。
实验三:汇编语言的指令集在本实验中,我学习了汇编语言的指令集。
汇编语言中的指令可以分为数据传送指令、算术运算指令、逻辑运算指令和控制指令等多种类型。
通过学习不同类型的指令,我可以编写更加复杂和功能强大的汇编程序。
实验四:汇编语言的程序设计在这个实验中,我学习了如何使用汇编语言进行程序设计。
通过学习汇编语言的程序设计技巧,我可以编写出高效、精确和可靠的程序。
我还学习了如何使用子程序、循环和条件语句等控制结构来实现不同的功能。
实验五:汇编语言的调试和优化在本实验中,我学习了如何调试和优化汇编语言程序。
调试是指在程序运行过程中发现并修复错误的过程,而优化则是指对程序进行性能提升的过程。
通过学习调试和优化技巧,我可以提高程序的效率和可靠性。
结论:通过这些实验,我对汇编语言有了更深入的了解。
汇编语言虽然复杂,但它可以帮助我们更好地理解计算机的内部工作原理,并且可以编写出高效、精确和可靠的程序。
通过学习汇编语言,我不仅提升了自己的编程能力,还对计算机科学有了更全面的认识。
我相信,在今后的学习和工作中,汇编语言将会发挥重要的作用。
(最新版)汇编实验报告汇总
湖北工程学院计算机与信息科学学院实验报告2013—2014学年第_二学期课程名称:汇编语言程序设计班级:_______________________学号:_________________姓名:___________ 雷震_______________ 任课教师:叶从欢_____________实验一:顺序结构一、实验目的:1.加深对汇编的理解;2.掌握汇编程序的设计方法;3.学会使用顺序结构。
二、实验内容:定义变量A、B、C、D,编写程序实现:(a * b + c - 70 )/ a。
并将最后的商保存在D中,余数保存在D+2中。
本实验中:a = 15, b = 75, c = 70 。
程序中,定义字型变量A、B、C、D。
A B、C分别保存算数表达式中的数值a、b、c,D保存算数运算的最终结果。
程序开始,先将变量A、B、C赋初值,计算A乘以B的值,将结果保存在DX AX中,然后逐步计算A*B+C, A*B+C-70和(A*B+C-70)/A。
最后计算结果的商保存在A对,余数保存在D对,最终将AX赋值给D, DX赋值给D+2。
程序运行完毕,程序返回。
三、实验步骤1.程序设计流程图2.调试与运行(1)首先进入DO系统,进入目标文件所在的系统盘和文件夹;(2)输入“ MASM TEST,此命令是调用宏汇编程序MAS对源文件TEST.AS进行编译,TES■是文件的名称,生成目标文件TEST.OBJ(3)若汇编无错误,则用命令“ LINK TEST进行连接,生成可执行文件TEST.EXE(4)若连接成功,则用命令“ TEST运行四•总结与体会通过这次实验,我初步了解了汇编程序设计的基本方法和步骤,掌握了汇编程序设计的顺序结构。
顺序结构是其他结构的基础,学好顺序结构对进一步学习汇编的好处不言而喻。
在本程序中,主要分为加法,减法,乘法,除法,本程序基本实现了四则运算的功能,该程序所完成的运算式为:(a * b + c - 70 )/ a。
汇编实验报告2
篇一:汇编实验报告2汇编语言与接口课程实验报告实验名称循环与分支程序设计实验室名称班级________________软件93_______________ 学号_______________09161059_______________ 实验日期年月日评分教师实验报告成绩__________ 评分日期________年_______月________日一、二、实验目的实验环境实验内容熟悉汇编语言上机环境masm以及上机过程,学会设计循环与分支程序;掌握基本的输入输出及debug调试。
编程环境:masm for windows 集成实验环境 2011 三、预习:了解循环程序的结构形式,掌握do_while结构和do_until结构学会设置循环的初始状态、循环体和循环控制部分,掌握loop等指令了解分支程序的结构形式,掌握一般的控制转移指令及跳跃表法实验题目:1. 试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来2. 试编制一个汇编语言程序,求出首地址为data的100d字数组中的最小偶数,并把它存放在ax中3. 试编写一汇编语言程序,要求从键盘接收一个4位的十六进制数,并在终端上显示与它等值的二进制数实验步骤:实验一主要步骤:从键盘接收一个字符,判断是否为’0’,若是则退出;否则判断该字符是否介于’a’和’z’之间,若是输出空格,并给该字符减去20h后输出,再输出回车换行进行下一次操作,否则直接回车换行进行下次操作。
实验二主要步骤:循环初始设置,将最大的奇数ffff赋给ax(无符号),bx设为0(采用寄存器相对寻址法),cx设为100,循环100次;从数组读取一个字到dx中,test若最后一位为1则进行下次循环,否则与ax进行比较,如果小则交换,否则进行下次循环实验三主要步骤:循环四次从键盘接收四个字符并将其存放到一个数组中,每次判断如果字符为’q’,则退出,介于’0’到’9‘之间,减去30h,介于’a’到‘f’之间减去37h;然后对每个字节分别向右移动3、2、1、0位,与0x01相与后输出四、源程序清单、测试数据、运行结果实验一(1) 源程序清单start:mov ax,datasmov ds,ax;此处输入代码段代码 next:mov ah,01h int 21h cmp al,0 jz exit cmp al,a jl next1 cmp al,z jg next1 mov bl,al mov dl,20h mov ah,02h int 21hsub bl,20h mov dl,bl mov ah,02h int 21h next1:mov dl,0ah mov ah,02h int 21hmov dl,0dh mov ah,02h int 21h jmp next exit:mov ah,4chint 21h(2) 运行结果:实验二(1) 源程序清单: start:mov ax,datas mov ds,ax;此处输入代码段代码 mov ax,0ffffh mov cx,100 movbx,0loop1:mov dx,data[bx] test dx,0001h jnz next cmp dx,ax jge next mov ax,dx next:add bx,2 loop loop1 mov ah,4chint 21h(2) debug调试:实验三(1)源程序清单 start:movax,datas篇二:汇编第2次上机实验报告汇编语言上机实验报告时间: 2013-4-19,19:00-21:30 地点:南一楼803室实验人员:王涛实验一一、题目从键盘输入两串字符分别存入buf1和buf2区,比较两串内容是否相等,相等显示“match !”, 不相等显示“no match !”。
汇编语言程序设计实验报告
实验报告实验名称汇编语言程序设计||专业班级:信息安全学号:姓名:实验一汇编语言上机过程和Debug常用调试命令一.实验目的:学习程序设计的基本方法和技能,熟练掌握用汇编语言设计、编写、调试和运行程序的方法。
二.实验题目:熟悉与实验有关的系统软件(如编辑程序、汇编程序、连接程序和调试程序等)的使用方法。
在调试过程中,学习及掌握debug程序的各种操作命令。
三.问题描述:试编写一程序:比较两个字符串string1和string2所含的字符是否相同,若相同则显示‘match’; 否则,显示‘no match’。
四.方法说明:a) 使用ws、tc或EDIT编辑程序来建立源文件,然后存盘,使系统返回DOS。
b) 用汇编程序masm(或asm)对源文件汇编产生目标文件obj如:汇编指示出错则需重新调用编辑程序修改错误,直至汇编通过为止。
c) 用连接程序link 产生执行文件EXE.d) 执行程序,可直接从DOS执行程序。
e) 使用debug程序调试程序的方法。
五.实验步骤:1.调用字处理程序EDIT 建立以sample.asm文件datarea segmentstring1 db ‘move the cursor backward.’string2 db ‘move the cursor backward.’mess1 db ‘Match..’,13,10,’$’mess2 db ‘No match!..’,13,10,’$’datarea endsprognam segmentmain proc farassume cs:prognam,ds:datarea,es:datarea start:push dssub ax,axpush axmov ax,datareamov ds,axmov es,axlea si,string1lea di,string2cldmov cx,25repz cmpsbjz matchlea dx,mess2jmp short dispmatch:lea dx, mess1disp:mov ah,09int 21hretmain endpprognam endsend start2.对源文件汇编产生目标文件obj D:\masm 文件名。
- 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. 执行该程序,观察执行现象。