汇编语言程序设计 实验1
汇编语言程序设计实验1——汇编程序与调试器的使用
一、实验目的
熟悉DOS操作系统环境下的汇编程序MASM的使用、掌握DEBUG的基本命令及其功能。
二、实验内容
1.编写一个小程序,从键盘接收一个大写字母,存放到指定的内存单元BUFF1,并转换其为对应的小写字母,存放到指定的内存单元BUF2中。
上机编辑、汇编、连接并运行该程序。
2. 输入源程序、汇编、连接并执行相应程序,并用DEBUG 实现以下操作:
(1)用反汇编命令查看相应程序的可执行语句序列,分析其与源程序的异同,查看相应程序占用内存单元的字节数。
(2)用数据查看命令查看执行前的数据单元的内容。
(3)分别用P命令和T命令逐步执行程序,分析这两种方式的区别,记录“转换为小写字母”指令执行后的状态字。
(4)查看程序执行后数据单元的内容。
(5)查看0000:0000 起始的32个单元的内容。
(6)用汇编命令编写一个简单加法程序“3+5=8”,加数和结果分别存在内存单元NUM1、NUM2、NUM3中。
三、实验要求
学生要提前做好相关内容的预习(包括源程序的分段组织、DEBUG的系列命令等),熟悉被调试的程序(学生应当在本实验中自行设计一些汇编语言程序,其目的是熟悉相关编程环境的特性),并对程序的测试/调试过程(包括所用的编程环境命令、DEBUG命令等)作出详细计划。
认真完成实验,正确记录各项数据,记录实验过程中出现的问题及其解决过程。
四、实验报告
写出各实验程序的测试/调试的详细过程(包括DEBUG命令的使用等),特别是要写出在DEBUG状态下编写、运行程序的过程。
要系统给出各程序在测试/调试过程中所遇到的问题、解决问题的方法与途径。
要对程序在测试/调试过程中的问题进行分析,对相关的执行结果进行分析。
汇编语言程序设计实验
实验一汇编语言的上机过程及指令学习一、实验目的1.学习汇编语言的上机过程;2.学习DEBUG的使用方法;3.学习数据传输指令、算术运算指令的寻址方式、使用方法及对标志寄存器的影响情况。
二、上机环境硬件:PC及兼容微机软件:或或任何文本编辑系统MASM.EXELINK.EXE三、实验内容及步骤1.学习汇编语言的上讥过程:进入MASM文件夹。
(1)建立“*.ASM”文件。
方法是:键入:ED 文件名.ASM回车参考程序如下:;PROGRAM TITLEdata segment ;数据段定义source_buffer db 40 dup(‘a’);源串data endsextra segment ;扩展段定义dest_buffer db 40 dup(?) ;目标串extra endscode segment ;代码段定义main proc far ;主函数assume cs:code,ds:data,es:extra ;段声明start: push ds ;保存返回地址xor ax,axpush axmov ax,data ;数据段寄存器赋值mov ds,axmov ax,extra ;扩展段寄存器赋值mov es,axlea si,source_buffer ;取得源串首地址lea di,dest_buffer ;取得目标串首地址cld ;串传送时地址增量mov cx,40 ;串长40个字符rep movsb ;串传送ret ;返回系统main endpcode endsend start注意:在输入程序的过程中,要用F3_S随时存盘,程序输入完毕后用F3_E命令保存文件并退出编辑系统(也可以使用其他编辑文件,如:TURBO C、TURBO PASCAL、WPS、记事本等均可)。
(2)用MASM汇编程序对刚建立的“*.ASM”文件进行汇编,产生“*.OBJ”目标文件,方法是:键入:MASM 文件名;回车(也可以在文件名后不加“;”,回车后按提示要求进行输入)若有错误,回到第(1)步再用编辑文件进行修改。
实验一 基础汇编语言程序设计
实验一基础汇编语言程序设计
一、实验目的
1、学习和了解TEC-XP教学实验系统监控命令的用法;
2、学习和了解TEC-XP教学实验系统的指令系统;
3、学习简单的TEC-XP教学实验系统汇编程序设计;
二、实验内容
1、学习练级使用TEC-XP教学实验系统和仿真终端软件PCEC。
2、使用监控程序R命令显示/修改寄存器内容、D命令显示存储器内容、E命令修改存储器内容;
3、使用A命令写一小段汇编程序,U命令反汇编刚输入的程序,用G命令连续运行改程序,用T、P命令单步运行并观察程序单步执行情况;
三、实验步骤
1、用R命令查看寄存器内容或修改寄存器的内容
2、用D命令显示存储器内容
3、用E命令修改存储器内容
4、用D命令显示着几个单元的内容
5、用A命令键入一段汇编源程序,主要是向累加器送入数据和进行运算,执行程序并观察运行结果。
1)
2)
3)
4)
6、举例编写汇编程序,用“A”命令输入,运行并观察结果
1)、例1:设计一个小程序,从键盘上接受一个字符并在屏幕上输出显示该字符。
2)、例2:设计一个小程序,用次数控制在终端屏幕上输出‘0’到‘9’十个数字符。
汇编语言程序设计实验报告(1)
实验一单指令功能测试实验一、实验目的1.会使用DEBUG软件;2.利用DEBUG单步执行功能测试指令的执行。
二、实验内容P129,14题三、实验要求:1. 在上机实验之前,首先做完作业;2. 设计如何验证指令执行的正确性操作,并在作业中描述;3. 周五上机验证,并给出上机结果。
若有出入,简要说明原因。
4. 实验报告当堂提交。
实验二完整的汇编语言程序设计实验一、实验目的1.掌握完整的汇编语言源程序的设计方法;2.掌握汇编语言源程序的执行过程。
二、实验内容设计一个程序,将所有的小写字母转换为大学字母,此程序不能改变除字母a~z外的任何其它字符。
三、实验要求(结果)1. 在上机实验之前,首先编写程序;2. 周一上机调试程序,并给出修改、运行正确的源程序;3. 分析错误原因;4. 实验报告当天提交。
实验三子程序设计实验一、实验目的1.掌握汇编语言源程序子程序设计方法;2.会使用CV软件工具。
二、实验内容编写子程序:判断三边能否构成三角形;编写主程序:输入三边,调用子程序判断,若能,则输出“Y”,否则输出“N”。
共判断10次。
三、实验要求同实验二。
实验四 宏汇编程序设计实验一、实验目的1.掌握宏汇编程序编程技术及宏调用的方法;2. 了解浮点CPU 编程方法及特点。
二、实验内容求(1+2+3+4+5+6+7+8+9)⨯LC π21的和。
三、实验要求1. 利用重复宏定义实现1、2、3⋯9数据的定义;2. 编写程序,上机验证结果的正确性。
3. 其它要求同前。
实验五 多模块程序设计实验一、实验目的1.掌握汇编段的属性的含义;2. 掌握利用LINK 将多模块连接起来的方法;3.掌握利用库文件将多模块连接起来的方法。
二、实验内容将字符串反序。
具体要求:1. 子模块:完成反序。
2. 主模块:输入字符串,调用子模块,显示反序后字符串。
3. 用 LINK 或库文件的方法实现多模块连接。
4. 其他要求同前。
实验六 混合程序的开发实验一、实验目的1.了解混合调用中的参数设置;2. 掌握混合调用的方法;二、实验内容求(1+2+3+4+5+6+7+8+9)⨯LC π21的和,并将和显示在屏幕上;具体要求:1. 用汇编语言完成子程序LC π21的编程;2. 通过C++完成实验内容的要求。
《汇编语言程序设计》实验报告(一)
MESS2 DB 'NO MATCH!’,13,10,’$'
DATA ENDS
对以上源程序重新汇编、连接、运行,结果输出为:MATCH!
七、实验总结
通过这次上机实践,我对汇编程序和连接程序的使用开始有一点了解。但刚开始还是很不顺的,总是出现找不到文件,后来经过同学的指导,终于知道自己的错误,原来是路径错误。所以还需要勤加练习,多多实践。
四、实验材料、工具、或软件
多媒体计算机、WINDOWS XP系统或纯DOS系统、MASM6.11以上版本或汇编语言程序设计实验集成环境。
五、实验要求
1. 编写一程序,要求比较两个字符串STRING1和STRING2所含字符是否相同,若相同则显示‘MATCH’,若不相同则显示‘NO MATCH’。用串比较功能来完成程序所要求的功能。
2.完成课堂例题,并用DEBUG运行,观察结果。
六、试验内容与步骤:(附上必要的调试过程及运行结果截图,可加附页)
试编写一程序,要求比较两个字符串STRING1和STRING2所含字符是否相同,若相同则显示‘MATCH’,若不相同则显示‘NO MATCH’。用串比较功能来完成程序所要求的功能。上机步骤如下:
《汇编语言程序设计》实验报告(一)
姓名
学号
系别
班级
指导教师
实验日期
课程名称
《汇编语言程序设计》
同组实验者
一、实验名称:实验一汇编程序和连接程序的使用
二、实验目的:
1. 熟悉汇编语言的上机环境;
2. 学习EDIT,MASM,LINK程序的使用;3. 掌握建立、汇、链接、运行汇编语言程序的过程。
汇编语言程序设计实验报告一
汇编语言程序设计实验报告(一)一、实验目的1. 掌握顺序程序设计方法2. 掌握分支程序的结构及分支程序的设计,调试方法3. 学习数据传送及算术和逻辑运算指令的用法4. 熟悉在PC 机上建立、汇编、连接、调试和运行汇编语言程序的过程二、实验内容1. 从键盘上接收一位十进制数X ,计算Y 值,并以十六进制形式显示出来,Y 按下列公式计算。
⎪⎪⎩⎪⎪⎨⎧===-=+=)6(2/)5()4(2)3(2222X X X X X X X X X X Y 2. 从键盘上接收两个一位十六进制数X 和Y ,然后再输入一个A-D 之间的字符,按下列要求计算。
A )当输入字符为A ,则计算X+Y ,并以十六进制形式显示出来B )当输入字符为B ,则计算|X-Y|,并以十六进制形式显示出来C )当输入字符为C ,则计算X*Y ,并以十六进制形式显示出来D )当输入字符为D ,则计算X/Y ,并以十六进制形式显示出来三、实验结果1、结果截图2、结果截图四、源代码1、代码DATA SEGMENTX DB ?TABLE DW L1,L2,L3,L4DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA START:MOV AX,DATAMOV DS,AXMOV AH,1INT 21HCMP AL,33HJB L0CMP AL,36HJA L0AND AL,0FHMOV X,ALSUB AL,3SHL AL,1XOR AH,AHMOV BX,OFFSET TABLEADD BX,AXJMP [BX]L1:MOV AL,XMUL ALADD AL,XJMP L7MUL ALSUB AL,XSUB AL,XJMP L7L3:MOV AL,XMUL ALJMP L7L4:MOV AL,XMUL ALMOV CL,2DIV CLJMP L7L7:MOV BL,ALMOV CL,4SHR AL,CLCMP AL,9JLE L5ADD AL,7L5:ADD AL,30HMOV DL,ALMOV AH,2INT 21HAND BL,0FHCMP BL,9JLE L6ADD BL,7L6:ADD BL,30HMOV DL,BLMOV AH,2INT 21HL0:MOV AH,4CHINT 21HCODE ENDSEND START2、代码DA TA SEGMENTX DB ?Y DB ?Z DB ?DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TA START:MOV AX,DATAXOR AX,AXMOV AH,1INT 21HMOV X,ALMOV AH,1INT 21HMOV Y,ALMOV AH,1INT 21HMOV Z,ALMOV AL,XMOV BL,YMOV AH,ZCMP AL,39HJBE M1SUB AL,7M1:SUB AL,30H MOV X,ALCMP BL,39HJBE M2SUB BL,7M2:SUB BL,30H MOV Y,BLMOV AL,XMOV BL,YCMP AH,41HJE L1CMP AH,42HJE L4CMP AH,43HJE L6CMP AH,44HJE L7L1:ADD AL,BLJMP L5L4:CMP AL,BLJA L8SUB BL,ALMOV AL,BLJMP L5L8:SUB AL,BLJMP L5L6:MOV AL,XMUL BLJMP L5L7:XOR AX,AXMOV AL,XDIV BLL5:MOV BH,ALMOV CL,4SHR AL,CLCMP AL,9JLE L2ADD AL,7L2:ADD AL,30HMOV DL,ALMOV AH,2INT 21HAND BH,0FHCMP BH,9JLE L3ADD BH,7L3:ADD BH,30HMOV DL,BHMOV AH,2INT 21HL0:MOV AH,4CHINT 21HCODE ENDSEND START五、实验心得通过本次实验,我对汇编语言程序设计的方法和特点有了一点理解,并有以下心得体会。
汇编实验一实验报告
汇编语言程序设计实验报告课程名称汇编语言程序设计班级姓名学号指导教师汇编语言程序设计实验一DEBUG 程序使用技巧1.寄存器和内存开始Debug 程序。
输入“Q ” 退出程序。
再次启动Debug。
输入“r ”来显示CPU的当前状态和寄存器中的当前内容。
输入“r AX ”和“1234”,AX 寄存器中的内容变为1234。
输入“r DS ”和“2000”,DS 寄存器中的内容变为2000。
输入“d DS:1000 ”来显示数据段中80H 字节数据,把数据抄在这里:输入“f DS:1000 1100 77 ”再显示一次这80H 字节。
判断这条指令的作用是什么?答:从DS:1000地址七,将1100H字节的内容赋值为77H再输入“d 2000:1000 ”来显示数据段中80H 字节数据。
观察与前面的数据有无不同。
输入“d 1900:0100 ”和“d 1ff0:0100 ”来显示两个存储段中的内容。
比较其中2000:0000 段中的数据。
相同段落中的数据相同么?根据你的观察,得出结论,是否程序员可以用不同的段起始地址和偏移量组合,把不容内容存入相同的内存段中。
答:相同段落中的数据相同, 程序员可以用不同的段起始地址和偏移量组合,把不容内容存入相同的内存段中。
2.输入机器码,使用单步和断点退出Debug,再重新启动Debug。
输入“r ”观察CPU 的状态,下一条指令是什么?答:下一条指令是ADD [BX+SI],AL使用两种方式输入一段程序,第一种方式:直接输入机器码。
输入“u ”来显示程序段中的指令序列。
然后输入“d CS:100 ” 来显示代码段中的数据。
观察显示内容。
“u CS:100 106 ”做反汇编,就是显示出汇编语句。
将这几句汇编语句记录下来:使用输入“r ”观察CPU 的状态,使用“t ”来跟踪程序,直至最后一条指令执行完毕。
注意,跟踪程序前,要让IP 寄存器中的值是100H。
一直监视AX 和IP 寄存器的内容变化,尤其是标志位的变化。
单片机汇编语言程序设计实验报告
单片机实验1 汇编语言程序设计实验---- 存储器块赋值一.实验目的1 熟悉存储器的读写方法,熟悉51汇编语言结构。
2 熟悉循环结构程序的编写。
3 熟悉编程环境和程序的调试。
二.实验内容指定存储器中某块的起始地址和长度,要求将其内容赋值。
例如将4000H 开始的100个字节内容清零或全部赋值为33H(参考程序),要求根据参考程序修改:修改程序,赋值内容为(10,9,8,7,6,5,4,3,2,1。
)三.实验仪器微机、VW,WAVE6000编程环境软件,(单片机实验箱)仿真器--仿真器设置-选择仿真器选择仿真头选择CPU Lab8000/Lab6000通用微控制器 MCS51实验 8051前3个软件实验勾选√使用伟福软件模拟器四实验步骤注意:1 文件不要用中文名称保存时不要用中文路径(目录),不要放在“桌面”上,源文件和工程要放在同一个文件夹下,文件名称和路径名称不要太长。
2 查看存储器菜单使用:窗口---数据窗口---XDATA 观察存储器内容3 查看SFR:窗口---CPU窗口查看CPU寄存器SFR4 单步执行:执行---单步执行(F8),每执行一步,查看每条语句涉及到的寄存器和存储器内容的变化结果,是否是指令所要得到的结果,如不是,检查错误原因,修改。
5利用多种执行方法和观察各种窗口调试程序,直至程序满意为止。
编译器默认设置:程序框图参考例程序:Block equ 4000hmov dptr, #Block ; 起始地址mov r0, #10 ; 清10个字节mov a, #33h ; 将33H赋值给aLoop:movx @dptr, a 将a写入外部RAMinc dptr ; 指向下一个地址djnz r0, Loop ; 记数减一ljmp $ ; $当前程序指针相当于一直执行自己;ljmp $ end说明:$:是当前语句的程序指针(地址)相当于一直执行自己:ljmp $,程序死循环要求赋值数据为10,9,8,7,6,5,4,3,2,1则以上程序该如何改动? 自己修改程序实现。
汇编语言程序设计实验报告
实验报告实验名称汇编语言程序设计||专业班级:信息安全学号:姓名:实验一汇编语言上机过程和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 segmentstring1db‘move the cursor backward.’string2db‘move the cursor backward.’mess1db‘Match..’,13,10,’$’mess2db‘No match!..’,13,10,’$’datarea endsprognam segmentmain proc farassume cs:prognam,ds:datarea,es:datareastart: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,09int21hretmain endpprognam endsend start2.对源文件汇编产生目标文件objD:\masm文件名。
汇编语言程序设计实验说明书
汇编语言程序设计实验说明书实验一 DOS常用命令及8088指令使用 (1)实验二内存操作数及寻址方法 (4)实验三数据串传送和查表程序 (6)实验四屏幕字符显示程序 (8)实验五条件转移指令 (10)实验六汇编语言程序上机过程 (13)实验七分枝程序 (15)实验八多重循环程序 (17)实验九子程序 (18)实验十音乐程序 (21)实验十一数码转换程序 (23)实验一 DOS常用命令及8088指令使用实验目的:通过实验掌握下列知识:1、DOS命令: DIR,DEL,RENAME,FORMAT,COPY。
2、8088指令: MOV,ADD,ADC,SUB,SBB,DAA,XCHG3、DEBUG命令: A,D,E,F,H,R,T,U。
4、BCD码,ASCII码及用16进制数表示二进制码的方法。
5、8088寄存器: AX,BX,CX,DX,F,IP。
内容及步骤:一、DOS常用命令练习:1、将机房提供的系统盘插入A驱动器中,开机,出现提示符后打入命令FORMAT B:/S。
等屏幕上出现提示后将新盘插入B驱动器并打回车。
PC机即对新盘格式化并将糸统拷入。
2、打命令 COPY A:*。
* B 将糸统盘上全部文件拷到你的盘上。
3、将新盘插到 A驱动器中,用DIR命令查看盘上文件。
4、用命令 COPY DEBUG。
COM BUG 复制一个文件。
5、用命令 RENAME BUG BG 将BUG 文件改为BG。
6、用命令 DEL BG 将文件BG删除。
在操作时要注意提示信息,并按提示操作。
二、DEBUG 命令使用:1、打 DEBUG 进入 DEBUG 控制,显示提示苻 '_ '。
2、用命令 F100 10F 'A' 将'A'的ASCII码填入内存。
3、用命令 D100 10F 观察内存中的16进制码及屏幕右边的ASCII字符。
4、用命令 F110 11F 41 重复上二项实验,观察结果并比较。
《汇编语言程序设计》
解法1
解法2
MOV AX, WORD PTR FIRST XCHG AX, WORD PTR SECOND MOV WORD PTR FIRST, AX
解法3
错误的代码 MOV AL, FIRST
MOV BL, SECOND
XCHG AL, BL MOV AL, FIRST+1 MOV BL, SECOND+1 XCHG AL, BL MOV MOV MOV MOV MOV MOV AH, FIRST FIRST, SECOND SECOND, AH AH, FIRST+1 FIRST+1, SECOND+1 SECOND+1, AH
66H
01H
CAH 01H
AX=6601H
(2)采用堆栈指令编写 PUSH WORD PTR FIRST PUSH WORD PTR SECOND POP WORD PTR FIRST POP WORD PTR SECOND
第1条指令执行后 第2条指令执行后 第3条指令执行后 第4条指令执行后
56H 78H 12H
12H
34H
34H
12H 34H
实验二:用户登录验证程序
时间:周四 地点:1416 类型:设计
• 一、实验目的: 学习掌握汇编语言的开发过程,汇编源程序的编程格式和基本结构, DOS/BIOS功能调用,掌握分支、循环、子程序等基本结构程序的设计方 法。 • 二、实验内容 用汇编语言程序设计方法,设计一个用户登陆验证程序。 • 三、实验要求 1. 程序执行后,给出操作提示,请用户键入用户名和密码。 2. 用户在键入密码时,程序不回显键入字符。 3. 只有当用户键入的用户和密码字符串和程序内定的字符串相同时,显 示欢迎界面,并返回DOS。 • 四、实验报告要求 实验报告的内容:实验名称、实验目的、实验内容、实验程序、实验结 果分析、实验过程遇到的问题及体会。 实验报告以文本形式递交,要求书写规范、文字简练、语句通顺、图表 清晰。
