汇编语言程序设计实验篇
汇编语言程序设计实验

实验一汇编语言的上机过程及指令学习一、实验目的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)步再用编辑文件进行修改。
《汇编语言程序设计》实验报告(一)

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——汇编程序与调试器的使用一、实验目的熟悉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.掌握MASM汇编程序的上机过程,熟悉掌握集成环境中的编辑(edit),编译(masm),连接(link)和调试(debug);2.熟练debug命令。
3.了解两个多字节相加程序的运行。
二.实验步骤源程序如下:DATA SEGMENTNUM1 DB 12H,56H,3BH, 0NUM2 DB 57H,4AH,9AHDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATA ;数据段段地址MOV DS,AXCLC ;清除进位LEA BX,NUM1 ;将num1的有效地址送入BXLEA SI,NUM2 ;将num2的有效地址送入SIMOV CX,3LL: MOV AL,[SI] ;将SI中的内容num2送入ALADC [BX],AL ;将相加结果存入BX中INC BXINC SILOOP LL ;循环部分MOV AL,0ADC AL,0MOV [BX],ALMOV AH,4CH ;功能号,程序终止,返回DOSINT 21H ;返回操作系统CODE ENDSEND START1.编辑源程序使用edit编辑软件把汇编语言程序输入微机,形成扩展名为。
ASM的源程序文件,如ZJF.ASM。
2.使用宏汇编程序把ASM文件汇编成扩展名为.OBJ的二进制代码文件,及扩展名为.lst的汇编语言程序列表文件。
列如,对ZJF.ASM有ZJF.OBJ和ZJF.LST。
在MASM下点击MASM,输入zjf.asm,按enter键。
3.用LINK程序产生EXE文件打开在MASM下LINK,输入zjf.obj,回车生成可执行文件,zjf.exe文件。
4.程序的调试(1).启动debug,输入n空格zjf.exe回车L回车u回车..................反汇编;可知,段地址是1400,段内首地址0000,数据段13FF (2).调试过程如下:-r显示所有寄存器的值;-g=1400:0000 001f 执行-d=13ff:0000 0003 显示结果结果验证:3B5612H+9A4A57H=D5A069H,运行结果与计算一致。
汇编语言程序设计实验报告

汇编语言程序设计实验报告汇编语言程序设计实验报告引言汇编语言是一种低级语言,用于编写计算机的底层程序。
在计算机科学与技术领域,汇编语言程序设计是一门重要的课程。
本篇实验报告将介绍我在汇编语言程序设计实验中所学到的知识和经验。
实验目的本次实验的目的是通过编写汇编语言程序,加深对计算机底层原理的理解,并掌握汇编语言的基本语法和编程技巧。
实验环境在实验中,我使用了一台运行Windows操作系统的计算机,并安装了MASM 汇编语言开发工具。
实验内容1. 汇编语言基础知识在实验开始前,我先学习了汇编语言的基础知识。
汇编语言使用助记符来代表机器指令,与机器指令一一对应。
了解了寄存器、内存和指令的概念,并学会了如何使用它们来编写汇编程序。
2. 汇编语言程序设计在实验中,我编写了一些简单的汇编语言程序,以加深对汇编语言的理解和应用。
例如,我编写了一个计算两个数之和的程序,通过将两个数存储在寄存器中,并使用加法指令进行运算,最后将结果保存到指定的内存位置。
3. 汇编语言程序调试在编写汇编语言程序时,我遇到了一些错误和问题。
为了解决这些问题,我学会了使用调试工具来定位错误。
通过逐步执行程序,并观察寄存器和内存的变化,我能够找到程序中的错误并进行修正。
4. 汇编语言程序优化在实验中,我也尝试了对汇编语言程序进行优化,以提高程序的性能和效率。
通过减少指令的数量和使用更高效的算法,我成功地改进了程序的执行速度。
实验心得通过本次实验,我深刻体会到了汇编语言程序设计的重要性和挑战性。
汇编语言虽然复杂,但它能够直接操作计算机的硬件,提供了更高的灵活性和效率。
通过编写汇编语言程序,我不仅加深了对计算机底层原理的理解,还提高了问题解决和调试能力。
总结汇编语言程序设计实验是一门重要的课程,它为我们提供了学习计算机底层原理和编程技巧的机会。
通过实验,我掌握了汇编语言的基本知识和技巧,并成功编写和优化了汇编语言程序。
这次实验不仅加深了我的理论知识,还培养了我的实际操作能力。
汇编语言程序设计-实验报告

《汇编语言程序设计》实验报告实验项目1:DOS操作练习一、实验目的:熟悉windows环境下常用DOS命令的使用;掌握一些常用DOS命令。
二、实验内容:1、进入命令提示符方式Win+R 输入cmd 进入DOS2、常用DOS命令练习I、目录操作类命令:a.CD——改变当前目录格式:CD[盘符:][路径名][子目录名]b.MD——建立子目录格式:MD[盘符:][路径名]〈子目录名〉c.RD——删除子目录命令格式:RD[盘符:][路径名][子目录名]d.DIR——显示磁盘目录命令格式:DIR [盘符][路径][/P][/W]e.PATH——路径设置命令格式:PA TH[盘符1]目录[路径名1]{[;盘符2:],〈目录路径名2〉…}f.TREE——显示磁盘目录结构命令格式:TREE[盘符:][/F][》PRN]II、文件操作类命令a、COPY 文件复制命令格式:COPY [源盘][路径]〈源文件名〉[目标盘][路径][目标文件名]b、XCOPY——目录复制命令格式:XCOPY [源盘:]〈源路径名〉[目标盘符:][目标路径名][/S][/V][/E]c、TYPE——显示文件内容命令格式:TYPE[盘符:][路径]〈文件名〉d、REN——文件改名命令格式:REN[盘符:][路径]〈旧文件名〉〈新文件名〉e、ATTRIB——修改文件属性命令格式:ATTRIB [+R][-R][+A][-A] [+S][-S] [+H][-H] [文件夹或文件名]f、DEL——删除文件命令格式:DEL[盘符:][路径]〈文件名〉[/P]g、UNDELETE——恢复删除命令UNDELETE[盘符:][路径名]〈文件名〉[/DOS]/LIST][/ALL]III、磁盘操作类命令(没有做)IV、其它命令(只做了CLS指令)三、分析和体会:在实验调试中有时忘记打“:或\”都会出现错误,还有一些指令是无法执行,出现“不是内部或外部指令,也不是可运行程序或处理文件”不知道是不是系统的问题,还是我的输入格式错误,没解决。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.汇编语言程序设计实验篇1.1.汇编系统软件简介Emu8086-Microprocessor Emulator是集源代码、汇编/反汇编工具以及debug的模拟器;它能模拟一台"虚拟"的电脑运行程序,拥有独立的“硬件”,避免访问真实硬件;该软件兼容的下一代处理器,包括PentiumII、Pentium4;利用该软件提供的调试工具,能够单步跟踪程序,观察程序执行过程中寄存器、标志位、堆栈和内存单元的内容;1.1.1创建程序 TEMPLATE程序本章与指令相关的实验都是用COM TEMPLATE类型的程序完成的;打开emu8086,在“welcome…”对话框中,单击按钮,创建文件;在“choose code template”对话框中,选择“COM template-simple and tiny executable file format, pure machine code.”后,单击按钮;在如所示的编辑界面中,在“;add your code here”部分输入相应的指令,第一条指令默认的偏移地址为100h;输入全部指令后,单击按钮,保存相应的程序段;2.EXE TEMPLATE程序本章与DOS功能调用和汇编源程序相关的实验都是用EXE TEMPLATE程序完成的;打开emu8086,在“welcome…”对话框中,单击按钮,创建文件;在“choose code template”对话框中,选择“EXE template-advanced executable : relocation, checksum.”后,单击按钮;在如图所示的编辑界面中,已经可以给出了源程序的框架,包含数据段、堆栈段和代码段的定义以及必要的功能调用等,在“add your data here”和“;add your code here”部分可以分别输入相应的变量定义和指令;输入全部指令后,单击按钮,保存相应的程序;1.1.2执行程序在编辑界面中,如图所示,单击按钮,自动完成源程序的编译和链接;在“emulator”对话框中,左边部分列出了寄存器的当前值,右边部分是已经输入的程序段,中间部分是右边每条指令的物理地址和对应的机器代码,中间的文本框中列出了当前指令的CS和IP;单击按钮,可以单步执行一条指令;单击按钮,可以一次执行完所有程序;单击按钮,可以重新回到第一条指令的位置处;单击按钮,可以重新加载另一个程序;修改“emulator”对话框中文本框的内容,也可以观察其它段的内容,在图所示界面中,DS=0700H,若要察看该数据段中偏移地址为6000H位置处的内存单元内容,可以在文本框中输入0700:6000,显示结果如图所示,中间部分依次列出从该地址开始的所有字节的内容;在“emulator”对话框的底部,单击按钮,可以观察栈的内容;单击按钮,可以观察标志寄存器中标志位的内容;在“emulator”对话框中,选择“view”菜单中的“memory”菜单项,也可以观察内存的情况;在“Random Access Memory”对话框中,可以修改文本框中的值可以确定所要观察的地址,该值由段基地址:段内偏移地址构成,如图所示,当前要观察的内存地址为6000:0010;在显示结果中,左边是逻辑地址,中间是从该地址的开始连续16个字节的内容,右边是每个字节对应的字符;在该对话框中,也可以直接修改存储器单元的值,如图所示,从60010H开始的连续4个字节的内容已经被修改为12H,34H,56H和78H;1.2基础实验1.2.1数据传送指令1.实验目的1熟悉8086指令系统的数据传送指令及8086的寻址方式;2利用emu8086调试工具调试汇编程序;2.实验设备微型计算机、emu80863.实验原理通用数据传送指令包括:1通用数据传送指令,如MOV,PUSH,POP,XCHG,CBW,CWD;2目标地址传送指令,如LDS,LES;3标志传送指令,如LAHF,SAHF,PUSHF,POPF;4输入输出指令,如IN,OUT,LEA寻址方式包括:1立即寻址;2直接寻址;3寄存器寻址;4寄存器间接寻值;5寄存器相对寻址;6基址-变址寻址;7基址—变址—相对寻址;8隐含寻址4.实验内容1创建COM TEMPLATE程序,输入以下程序段,观察程序的执行情况,程序段如下:MOV BL,08H ;BX=MOV CL,BL ;CL=MOV AX,03FFH ;AX=MOV BX,AX ;BX=MOV DS:6000H,BX ;DS:6000H=提示:在emulator对话框中间的文本框中输入段基地址:段内偏移地址,可以观察其它逻辑段相应存储单元的内容2创建COM TEMPLATE程序,用以下程序段将一组数据压入PUSH堆栈区,然后通过三种不同方式出栈;观察栈的变化情况提示:在emulator对话框中,单击按钮可以察看栈中内容以及出栈后数据的变化情况,并把结果填入中;程序段如下:MOV AX,0102HMOV BX,0304HMOV CX,0506HMOV DX,0708HPUSH AXPUSH BXPUSH CXPUSH DX第—种出栈方式的指令序列:POP DXPOP CXPOP BXPOP AX第二种出栈方式的指令序列注:替换掉第—种出栈方式的指令序列:POP AXPOP BXPOP CXPOP DX第三种出栈方式的指令序列注:替换掉第二种出栈方式的指令序列:POP CXPOP DXPOP AXPOP BX表 1-错误!未定义书签。
数据传送实验结果表格3创建COM TEMPLATE程序,分别输入下列指令,按要求设置各寄存器及内存单元的值提示:在“emulator”对话框中,可以直接修改寄存器的值;选择“view”菜单中的“memory”菜单项可以设置内存单元的值,其中BX=0010H,SI=0001H,60010H=12H,60011H=34H,60012H=56H,60013H=78H,60120H=0ABH,60121H=0CDH,60122H=0EFH,观察指令执行后AX中的内容;1MOV AX,1200H2MOV AX,BX3MOV AX,0120H4MOV AX,BX5MOV AX,0110HBX6MOV AX,BXSI7MOV AX,0110HBXSI4创建COM TEMPLATE程序,试分别用8086的直接寻址、寄存器间接寻址、变址寻址、寄存器相对寻址传送指令编写程序段,将DS:6000H字节存储单元中的内容传送到DS:6020H单元中;5设AX=1111H,BX=2222H,DS:6010H=3333H;试编写COM TEMPLATE程序,将AX的内容与BX的内容交换,然后再将BX的内容与DS:6010H单元的内容进行交换;6若DS:6000H=0EEFFH,ES:7000H=0CCDDH,请编写COM TEMPLATE程序,将两个存储单元的内容交换;5.实验习题指出下列指令的错误并加以改正,并在emu8086中验证;1MOV BX,SI2MOV AH,BX3MOV AX,SIDI4MOV BYTE PTRBX,2000H5MOV CS,AX6MOV DS,2000H6.实验报告要求1)整理源程序段和运行结果;2)给出几种在emu8086中察看内存单元的方法;1.2.2算术逻辑运算指令1.实验目的1熟悉算术逻辑运算指令的功能;2了解标志寄存器中各标志位的意义以及指令执行对它的影响;2.实验设备微型计算机、emu80863.实验原理算术运算指令包括:1加法指令,如ADD,ADC,INC;2减法指令,如SUB,SBB,DEC,NEG,CMP;3乘法指令,如MUL,IMUL;4除法指令,如DIV,IDIV;逻辑运算指令包括:AND,OR,NOT,XOR,TEST4.实验内容1创建COM TEMPLATE程序,输入以下程序段,单步执行并记录标志位的变化情况提示:在emulator 对话框中,单击按钮察看标志寄存器的值;程序段及结果表格如;表 1-错误!未定义书签。
算术逻辑运算实验结果表格2用BX作为地址指针,从BX所指的内存单元0010H开始连续存入三个无符号数10H、04H、30H,计算内存单元中这三个数的和,并将和放在0013H单元中,再求出这三个数的乘积,并将乘积存入0014单元中,写出完成此功能的COM TEMPLATE程序;3创建COM TEMPLATE程序,写出完成下述功能的程序段,并指出程序运行后AX=1将15H传送到AL;2再将AL的内容乘以2;3将15H传送到BL;4把AL的内容乘以BL的内容;4创建以下两个程序段的COM TEMPLATE程序并上机验证;1给数据段中从偏移地址1000H开始的12个字存储单元的内容赋值,请将第4条比较指令填写完整划线处;MOV SI,1000HNEXT: MOV WORD PTRSI,1ADD SI,2CMP SI,JNE NEXT2假定要按高地址到低地址的顺序进行清除操作高地址从1016H开始,则上述程序段应如何修改5.实验习题简要说明ADD、SUB、AND、OR指令对标志位的影响;6.报告要求1整理源程序段和运行结果,回答实验中的问题;1.2.3移位指令1.实验目的1熟悉移位指令的功能;2了解标志寄存器中各标志位的意义以及指令执行对它的影响;2.实验设备微型计算机、emu80863.实验原理移位指令包括:1非循环移位指令,如SAL,SAR,SHL,SHR;2循环移位指令,如ROL,ROR,RCL,RCR 4.实验内容1创建COM TEMPLATE程序,输入以下程序段,单步执行并记录标志位的变化情况提示:在emulator 对话框中,单击按钮可以察看标志寄存器的值;程序段及结果表格如;表 1-错误!未定义书签。
移位实验结果表格12写出完成下述功能的COM TEMPLATE程序并上机验证,程序运行后的商=1传送数据2058H到DS:1000H单元中,数据12H到DS:1002H单元中;2把DS:1000H单元中的数据传送到AX寄存器;3把AX寄存器的内容算术右移二位;4再把AX寄存器的内容除以DS:1002H字节单元中的数;5最后把商存入字节单元DS:1003H中;3创建COM TEMPLATE程序,输入以下程序段,单步执行并记录每一条指令对内存单元的影响结果提示:在“emulator”对话框中,选择“view”菜单中的“memory”菜单项可以察看内存单元的值,分析结果并说明该程序段的功能是什么;程序段及结果表格如;表 1-错误!未定义书签。
移位实验结果表格25.实验习题简要说明一般移位指令与循环移位指令之间的主要区别;6.实验报告要求整理源程序段和运行结果,回答实验中的问题;1.2.4串操作指令1.实验目的1熟悉串操作指令的功能;2了解串操作指令的使用方法;2.实验设备微型计算机、emu80863.实验原理串操作指令包括:1串传送指令MOVS;2串比较指令CMPS;3串扫描指令SCAS;4串装入指令LODS;5串存储指令STOS;4.实验内容1创建COM TEMPLATE程序,输入以下程序段,单步执行并根据结果回答后面的问题;CLDMOV DI,1000HMOV AX,55AAHMOV CX,10HREP STOSW上述程序段执行后:1从ES:1000H开始的16个字单元的内容是什么提示:在“emulator”对话框中,选择“view”菜单中的“memory”菜单项可以察看内存单元的值2DI= CX= 解释其原因;2在上题的基础上,再输入以下程序段并执行,回答后面的问题;MOV SI,1000HMOV DI,2000HMOV CX,20HREP MOVSB程序段执行后:1从ES:2000H开始的16个字单元的内容是什么2SI= DI= CX= 并分析之;3在以上两题的基础上,再分别输入以下三个程序段并运行之;程序段1:MOV SI,1000HMOV DI,2000HMOV CX,10HREPZ CMPSW程序段1执行后:1ZF= 根据ZF的状态,两个串是否比较完了提示:在emulator对话框中,单击按钮可以察看标志寄存器的内容2SI= DI= CX= 并分析之;程序段2:MOV 2008H,4455HMOV SI,1000HMOV DI,2000HMOV CX,10HREPZ CMPSW程序段2执行后:1ZF= 根据ZF的状态,两个串是否比较完了2SI= DI= CX= 并分析之;程序段3:MOV AX,4455HMOV DI,2000HMOV CX,10HREPNZ SCASW程序段3执行后:1ZF=根据ZF的状态,在串中是否找到了数据4455H2SI= DI= CX= 并分析之;4从DS:6000H开始存放有一个字符串"This is a string",把这个字符串从后往前传送到DS:6100H 开始的内存区域中即传送结束后,从DS:6100H开始的内存单元的内容为"gnirts a si sihT",试编写COM TEMPLATE程序并上机验证;提示:可以在数据区中直接输入字符串5.实验习题1简要说明执行串操作指令之前应初始化哪些寄存器和标志位;2总结串操作指令的用途及使用方法;6.实验报告要求整理源程序段和运行结果,对结果进行分析;1.2.5DOS功能调用1.实验目的1)掌握简单的DOS系统功能调用;2.实验设备微型计算机、emu80863.实验原理本节要用到的DOS功能命令包括:从键盘输入单个字符的语句如下:MOV AH,1INT 21H以上两条指令执行后,AL=从键盘输入的字符在屏幕上显示单个字符的语句如下:MOV DL,<要显示的字符>MOV AH,2INT 21H注意:源程序中所有语法符号都必须是半角符号,而且不允许汉字字符;在屏幕上显示字符串的语句如下:LEA DX,<字符串变量名,字符串必须以字符′$′作为结束>MOV AH,9INT 21H从键盘上输入字符串的语句如下:LEA DX,<键盘缓冲区名>MOV AH,0AHINT 21H4.实验内容1字符的输入和输出从键盘读入一个小写字母,输出字母表中倒数与该字母序号相同的那个字母;例如输入首字母a,则输出最后一个字母z,输入第4个字母d则输出倒数第4个字母w;程序流程图如所示;开始从键盘输入字符′z′– AL + ′a′→AL显示AL中的内容返回DOS图 1-错误!未定义书签。