汇编语言程序的设计实验篇(emu8086)
汇编语言程序设计实验篇emu8086

1.汇编语言程序设计实验篇1.1.汇编系统软件简介Emu8086-Microprocessor Emulator是集源代码编辑器、汇编/反汇编工具以及debug 的模拟器。
它能模拟一台"虚拟"的电脑运行程序,拥有独立的“硬件”,避免访问真实硬件。
该软件兼容Intel的下一代处理器,包括PentiumII、Pentium4。
利用该软件提供的调试工具,能够单步跟踪程序,观察程序执行过程中寄存器、标志位、堆栈和内存单元的内容。
1.1.1创建程序 TEMPLATE程序本章与指令相关的实验都是用COM TEMPLATE类型的程序完成的。
打开emu8086,在“welcome…”对话框中,单击按钮,创建文件。
在“choose code template”对话框中,选择“COM template-simple and tiny executable , 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”部分可以分别输入相应的变量定义和指令。
输入全部指令后,单击按钮,保存相应的程序。
基于Emu8086的汇编语言程序设计探讨

2010年1月下 第3期(总第189期)1 前言有很多人认为汇编语言的应用范围很小,由此忽视它的重要性。
其实汇编语言对每一个希望学习计算机科学与技术的人来说都是非常重要的,是不能不学习的语言。
汇编语言是计算机能够提供给用户使用的最快而又最有效的语言,也是能够利用计算机所有硬件特性并能够直接控制硬件的唯一语言[1]。
Emu8086是8086微处理器的仿真软件,完全兼容Intel 和Amd系列,内部集成了汇编程序编译器、连接器和丰富的参考资料、例程、学习指南等。
该款软件可模拟真实微处理器运行程序的详细步骤,不仅能够显示寄存器、存储器、堆栈、标志寄存器以及变量的值,而且还可通过双击鼠标来改变存储器的值。
除此之外,通过Emu8086可模拟显示器、直流步进电机、交通红绿灯和LED等外设[2]。
2 Emu8086和Debug的应用对比对于Emu8086,可在工作区输入并编辑源程序。
单击工具栏上的“emulate”按钮,Emu8086便会自动完成对源程序的编译和连接;如无错误,将会进入指令调试界面。
通过该软件提供的单步调试方式,可以方便观察当时寄存器值和状10.3969/j.issn.1671-489X.2010.03.064基于Emu8086的汇编语言程序设计探讨*邢江湖北师范学院计算机科学与技术学院 湖北黄石 435002摘 要 简单介绍Emu8086功能,通过汇编程序实例调试,对比Emu8086和Debug在汇编语言程序设计中的应用。
可以看出,Emu8086的使用使得汇编语言程序的编译、执行变得更加直观和清晰,有助于提高初学者的学习兴趣。
关键词 Emu8086;汇编语言;Debug中图分类号:TP368.1 文献标识码:B 文章编号:1671-489X(2010)03-0064-02Exploration of Assemble Language Program Design based on Emu8086//Xing JiangAbstract Firstly functions of Emu8086 are introduced. A program of assemble language is debugged. Emu8086 and debug are contrasted in it. The beginner can make use of Emu8086.Because compiling and running of assemble language program became clearly and easily by Emu8086.Key words Emu8086; assemble language; DebugAuthor’s address College of Computer Science & Technology, Hubei Normal University, Huangshi, Hubei, China 435002∗基金项目:2008年湖北师范学院教研项目“基于Internet的计算机组成与结构虚拟实验系统的设计与实现”。
8086汇编语言程序设计 微机实验报告

微机实验报告第一部分:8086汇编语言程序设计一、实验目的通过上机练习,初步掌握8086的指令系统,熟悉8086汇编语言程序的编写格式,学会编写简单的汇编语言应用程序,初步学会使用DEBUG调试工具。
二、实验题目(一)编程实现从字符串中查找特定的字符,记录特定字符的个数,并将结果在屏幕上显示,同时退出并返回DOS。
(要求字符串从键盘上输入)1、流程图2、实验程序及注释DATA SEGMENTBUFSIZE DB 20 ;数据段ACTCHAR DB ? ;定义字符串CHARTEXT DB 20 DUP(?) ;给输入字符分配内存DB '$'CNT DB 0 ;给计数器分配内存STRING1 DB 'PLEASE INPUT THE STRING:','$'STRING2 DB 0AH,0DH,'INPUT THE WORD YOU WANT TO CHECK:','$' STRING3 DB 0AH,0DH,'THE NUMBER OF THE WORD IS:','$'DATA ENDS ;数据段结束COSEG SEGMENT ;代码段ASSUME CS:COSEG,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV DX,OFFSET STRING1 ;显示提示语:请输入字符串MOV AH,09H ;输出字符串STRING1INT 21HMOV DX,OFFSET BUFSIZE ;从键盘输入字符串存入BUFSIZEMOV AH,0AH ;并送显INT 21HMOV DX,OFFSET STRING2 ;显示提示语:想查询的字符是MOV AH,09H ;输出字符串STRING2INT 21HMOV AH,01H ;从键盘上输入字符到AL中并送显INT 21HMOV BX,OFFSET CHARTEXT ;将字符串首地址存入BXMOV CL,ACTCHAR ;置循环次数CX=字符串长度XOR CH,CHLP1: CMP AL, [BX] ;字符串从头开始与键入字符AL比较JZ LP2 ;相等则转入LP2INC BX ;指针指向字符串下一个字符DEC CX ;循环次数减一JNZ LP1 ;若还有未比较的字符,继续循环LP1JMP FINI ;若全部比较完毕,跳转FINILP2: INC CNT ;计数器增一INC BX ;指针指向字符串下一个字符DEC CX ;循环次数减一JNZ LP1 ;若还有未比较的字符,跳至LP1 FINI: MOV DX,OFFSET STRING3 ;显示提示语:所查询的字符个数:MOV AH,09HINT 21HMOV AL,CNT ;将计数器的值送ALAAM ;将此值转换成非压缩BCD码ADD AH,30H ;将BCD码转换为ASCⅡ码MOV DL,AH ;高位送显MOV AH,02HINT 21HMOV AL,CNT ;再将计数器的值送ALAAMADD AL,30H ;将BCD码转换为ASCⅡ码MOV DL,AL ;低位送显MOV AH,02HINT 21HMOV AH,4CH ;结束INT 21HCOSEG ENDS ;代码段结束END START ;程序结束3、运行结果PLEASE INPUT THE STRING(先输入字符串):ASDFAAD↙INPUT THE WORD YOU WANT TO CHECK(输入待查找字符): A↙THE NUMBER OF THE WORD IS(数量为):3↙PLEASE INPUT THE STRING(先输入字符串):ASDFAAD↙INPUT THE WORD YOU WANT TO CHECK(输入待查找字符):9↙THE NUMBER OF THE WORD IS(数量为):0↙PLEASE INPUT THE STRING(先输入字符串):ASDFAAD↙INPUT THE WORD YOU WANT TO CHECK(输入待查找字符): S↙THE NUMBER OF THE WORD IS(数量为):1↙4、程序改进○1循环次数的改进原来的程序:MOV CX,19改进原因:此程序表明无论输入的字符串多长,即使没有达到限定的最大字符串的长度,也要循环19次。
微机原理emu8086课程设计

微机原理emu8086课程设计目录一、软件启动 (1)二、程序代码 (3)1、数值计算 (3)(1)十进制系统 (3)2、逻辑运算 (7)(1)与运算(AND) (7)(2)或运算(OR) (7)(3)异或运算(XOR) (7)4、宏 (13)三、鸣谢 (17)Emu8086的应用分析摘要:Emu8086是一个可在Windows 环境下运行的8086CPU汇编仿真软件。
它集成了文本编辑器、编译器、反编译器、真调试、虚拟设备和驱动器为一体,并具有在线使用指南,这对刚开始学习汇编语言的人是一个很有用的工具。
您可以在真器中单步或连续执行程序,其可视化的工作环境让使用者操作更容易。
您可以在程序执行中动态观察各寄存器、标记位以及存储器中的变化情况。
仿真器会在模拟的PC中执行程序,以避免程序运行时到实际的硬盘或内存中存取数据。
此外,该软件完全兼容Intel新一代处理器,包括了PentiumⅢ、Pentium4的指令。
关键词:Emu8086 微机原理程序文件一、软件启动双击进入启动界面如图1所示,用户可以选择新建文本、程序示例、快速启动指南、最近使用文档。
图1 启动界面Emu8086软件提供的实例中包含了几十种典型的程序代码,其中包括:数值计算、逻辑运算、屏幕显示、键盘输入、文件打印、马达控制、温度控制、交通灯控制等。
在软件提供的快速指南中提供了多种在线帮助工具,包括:文件索引、8086CUP指令使用指南、系统中断调用列表以及用法等。
用户可以通过该工具快速地掌握8086CPU指令体系和emu8086汇编真软件的使用。
程序编辑结束后,点击模拟,即可进入模拟状态:点击运行之后即可用屏幕模拟器进行模拟,如:二、程序代码1、数值计算(1)十进制系统目前使用最多的是十进制。
十进制系统有10个数字0,1,2,3,4,5,6,7,8,9。
利用这些数字能表示任何数值,例如754这些数字是由每一位数字乘以“基数”的幂累加而成的(上一个例子中基数是10 因为十进制中有十个数字)。
【微机原理作业】实验一emu8086软件使用与指令练习

【微机原理作业】实验一emu8086软件使用与指令练习实验一EMU8086 软件使用与指令练习实验目的:进行指令验证,并熟悉EMU8086软件的使用。
注意:MOV AX ,[BX] [SI] 与MOV AX ,[BX+SI] 同等,MOV BP,2 [BX+DI] 与MOV BP,[BX+DI+2] 同等。
连续执行以下指令,填写指令执行结果,并上机验证结果。
M代表存储单元物理地址[Reg]代表寄存器间接寻址的存储单元内容FLAGL代表标志寄存器低字节SRC代表源操作数DST代表目标操作数MOD代表寻址方式填空时:IM代表立即寻址方式DRT代表直接寻址方式R代表寄存器寻址方式RIN代表寄存器间接寻址方式IDX代表变址寻址方式B&IDX代表基址加变址寻址方式。
MOV AX,2000H ;AH=20H MOD=IMMOV DS,AX ;AL=00H DS=2000H MOD=R MOV SS,AX ;SS=2000H AX=2000HMOV BX,2050H ;BH=20H BL=50HMOV SI,BX ;SI=2050HMOV DI,3050H ;DI=3050HMOV SI,DI ;SI=3050HMOV SP,5FFFH ;SP=5FFFHMOV CL,25 ;CL=19H 。
25 为十进制数,下面的64、256均为十进制数。
MOV BL,CL ;BL=19HMOV AH,0F0H ;AH=F0HMOV CH,AH ;CH=F0HMOV BYTE PTR [DI],64 ;[DI]=40H M=23050H SRCMOD=IM MOV WORD PTR [SI],256 ;[SI]=00H [SI+1]=01H M=23050H ;DST MOD=RINMOV DL,[SI+1] ;DL=01H M=23051H SRC MOD=IDX MOV DH,1[SI] ;DH=01H M=23051H SRC MOD=IDX MOV AL,1[SI] ;AL=01H M=23051HMOV WORD PTR [BX] [SI],34H ;[BX+SI]=34H DST MOD=B&IDX;[BX+SI+1]=00 HMOV [BX+SI+4],BX ;[BX+SI+4]=19H M=25069HMOV 2[BX+SI],BX ;DST MOD=B&IDXMOV BP,2[BX+DI] ;BP=2019H M=2506BH SRC MOD=B&IDXMOV [BP][DI],BX ;[BP][DI]=2019H M=25069HMOV AX,[BP][DI] ;AX=2019H M=25069HMOV BL,AL ;BL=19HMOV ES,BX ;ES=2019HPUSH BX ;SP=5FFDH [SP]=19H [SP+1]=20H PUSH DI ;SP=5FFBH [SP]=50H [SP+1]=30H POP CX ;SP=5FFDH CX=3050H POP DX ;SP=5FFFH DX=2019HXCHG AX,BP ;AX=2019H BP=2019HXCHG DH,BL ;DH=19H BL=20HSAHF ;FLAGL=00X0X0X0 AH=20HCMC ;CF= 1LAHF ;FLAGL=00X0X0X1 AH=03HSTD ;DF= 1CLI ;IF=0PUSHF ;SP=5FFDH [SP]=03H [SP+1]=04H CLD ;DF=0 POPF ;SP=5FFFH FLAGL=00X0X0X1NOP ;空指令NOP。
Emu8086软件的使用

Emu8086软件的使用一、实验目的:(1)熟悉汇编语言开发环境。
(2)掌握Emu8086软件使用方法。
(3)了解汇编语言的程序结构、调试一个简单的程序。
(4)理解寻址方式的意义。
二、实验内容及要求:1、Emu8086的使用(1)打开桌面上的Emu8086的图标,出现如图所示的对话框,选择【继续……】首次打开软件,界面中默认已有一段小程序。
该程序实现在屏幕上显示三段字符串的功能。
若用户需要自己重新编程,可点击工具栏的【新建】图标,出现如图所示的对话框,选择编程所采用的模板。
选择不同的模板,在程序源代码中会出现如下标记:#MAKE_COM# 选择COM模板#MAKE_BIN# 选择BIN模板#MAKE_EXE# 选择EXE模板#MAKE_BOOT# 选择BOOT模板#MAKE_COM#最古老的一个最简单的可执行文件格式。
采用此格式,源代码应该在100H后加载(即:源代码之前应有ORG 100H)。
从文件的第一个字节开始执行。
支持DOS和Windows命令提示符。
#MAKE_EXE#一种更先进的可执行文件格式。
源程序代码的规模不限,源代码的分段也不限,但程序中必须包含堆栈段的定义。
您可以选择从新建菜单中的EXE模板创建一个简单的EXE程序,有明确的数据段,堆栈段和代码段的定义。
程序员在源代码中定义程序的入口点(即开始执行的位置),该格式支持DOS和Windows命令提示符。
这两种模板是最常用的模板(2)选择COM模板,点击【确定】,软件出现源代码编辑器的界面,如图所示:在源代码编辑器的空白区域,编写如下一段小程序:MOV AX, 5MOV BX, 10ADD AX, BXSUB AX, 1HLT代码编写结束,点击菜单【文件】【另存为……】,将源代码换名保存。
本例将源代码保存为001.asm。
点击工具栏的【模拟】按钮,如果程序有错误不能编译,出现如图所示的界面:点击错误提示,即可选择源代码中相应的错误的行,在此处更改源代码。
80X86汇编语言程序设计 实验报告2

80X86汇编语言程序设计实验报告专业:班级:日期:成绩:第二次试验指导老师:学生姓名:学号:一、实验目的(1) 加深对一些常用的汇编指令的理解;(2) 加深对常用DOS功能调用指令的理解;(3) 进一步熟悉TD的使用。
二、实验内容1、《80X86汇编语言程序设计》教材中 P45的 2.3题。
要求:(1) 分别记录执行到“MOV CX,10”和“INT 21H”之前的(BX), (BP),(SI),(DI)各是多少。
(2) 分别记录程序执行初期与退出之前数据段开始40个字节的内容,指出运行结果是否与设想的一致。
2、《80X86汇编语言程序设计》教材中 P45的 2.4题。
要求:(1) 实现的功能不变。
(2) 内存单元中数据的访问采用变址寻址方式。
(3) 记录程序执行到退出之前数据段开始40个字节的内容,检查程序运行结果是否与设想的一致。
3、编写程序利用DOS 10号功能调用输入一个字符串,统计字符串中字符0、1、…、9出现的次数并显示出来(假设每个字符最多出现9次,若大于9次则显示为x)。
三、实验步骤及结果1、输入源程序,如下:.386STACK SEGMENT USE16 STACKDB 200 DUP(0)STACK ENDSDA TA SEGMENT USE16BUF1 DB 0,1,2,3,4,5,6,7,8,9BUF2 DB 10 DUP(0)BUF3 DB 10 DUP(0)BUF4 DB 10 DUP(0)DA TA ENDSCODE SEGMENT USE16ASSUME CS:CODE,DS:DA TA,SS:STACKSTART: MOV AX,DA TAMOV DS,AXMOV SI,OFFSET BUF1MOV DI,OFFSET BUF2MOV BX,OFFSET BUF3MOV BP,OFFSET BUF4MOV CX,10LOPA: MOV AL,[SI]MOV [DI],ALINC ALMOV [BX],ALADD AL,3MOV DS:[BP],ALINC SIINC DIINC BPINC BXDEC CXJNZ LOPAMOV AH,4CHINT 21HCODE ENDSEND START(1)进行单步调试。
实验五 80x86汇编语言程序设计

计算机组成原理与汇编元程序设计实验报告实验五 80x86汇编语言程序设计1.按要求编写一个汇编语言程序,实现下面的功能:1)在计算机屏幕上输出自己的学号和姓名拼音;2)在计算机屏幕上输出99乘法表。
1*1=1 1*2=2 1*3=3……1*8=8 1*9=92*1=2 2*2=4 2*3=6……2*8=16 2*9=183*1=3 3*2=6 3*3=7……3*8=24 3*9=27………………8*1=8 8*2=16 8*3=24 ……8*8=64 8*9=729*1=9 9*2=18 9*3=27 ……9*8=72 9*9=813)从键盘输入任意两个一位10进制数据,按99乘法表的格式输出这两个数据的乘法运算表达式;2. 编写设计一个2,10,16进制的码制转换程序,程序输入某进制的数据,转换为其他两种进制数据输出,要求:1) 程序可以输入<65536的任意进制的数据;2) 保证输入的数据为正确的进制数据,如果输入不正确,给出错误提示,然后要求重新输入;(比如要输入10进制数据,输入的必须是0-9,如果输入其他,则错误)3)程序执行输入输出的时请先给出一定的提示,比如“please input 4 bit decimal number:”“output decimal data:”等;要求:1. 提供算法与程序框图;2. 提供源程序,在源程序空白位置,对重要的源程序进行必要的注释;3. 将源程序以你学号后6位为文件名进行保存,并进行编译、链接生成exe文件,执行生成的exe文件,并验证程序的各个功能;提供截图,在截图空白位置,进行简单的说明;计算机组成原理与汇编元程序设计实验报告云南大学软件学院实验报告指导教师 (签名):1.乘法程序程序功能:利用int 21的9号功能输出保存在data段中的学号和姓名字符;利用两层循环控制输出9*9乘法表;接收被乘数和乘数,计算结果并输出表达式。
程序框图:源程序:运行结果:2.进制转换程序功能:输入二,十,十六进制任意一种数据,通过计算转化为另外两种类型的数据并输出,数据范围最大不超过65535程序框图:源代码:运行结果:输入二进制输入十进制输入十六进制。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.汇编语言程序设计实验篇1.1.汇编系统软件简介Emu8086-Microprocessor Emulator是集源代码编辑器、汇编/反汇编工具以及debug 的模拟器。
它能模拟一台"虚拟"的电脑运行程序,拥有独立的“硬件”,避免访问真实硬件。
该软件兼容Intel的下一代处理器,包括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 file.header: 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对话框中,单击按钮可以察看栈中容)以及出栈后数据的变化情况,并把结果填入表1-1中。
程序段如下: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-1数据传送实验结果表格寄存器的值第一种出栈方式第二种出栈方式第三种出栈方式(AX)=(BX)=(CX)=(3(提示:在“emulator”对话框中,可以直接修改寄存器的值;选择“view”菜单中的“memory”菜单项可以设置存单元的值),其中BX=0010H,SI=0001H,[60010H]=12H,[60011H]=34H,[60012H]=56H,[60013H]=78H,[60120H]=0ABH,[60121H]=0CDH,[60122H]=0EFH,观察指令执行后AX中的容。
1)MOV AX,1200H2)MOV AX,BX3)MOV AX,[0120H]4)MOV AX,[BX]5)MOV AX,0110H[BX]6)MOV AX,[BX][SI]7)MOV AX,0110H[BX][SI](4)创建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中验证。
1)MOV [BX],[SI]2)MOV AH,BX3)MOV AX,[SI][DI]4)MOV BYTE PTR[BX],2000H5)MOV CS,AX6)MOV 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。
表1-2算术逻辑运算实验结果表格CF ZF SF OF PF AF标志位程序程序段1 0 0 0 0 0 0 MOV AX, 1018HMOV SI, 230AHADD AX, SIADD AL, 30HMOV BX, 3FFHADD AX,BXMOV [20H], 1000HADD [20H], AXPUSH AXPOP BX程序段2 0 0 0 0 0 0 MOV AX, 0A0AHADD AX, 0FFFFHMOV CX, 0FF00HADC AX, CXSUB AX, AXINC AXOR CX, 0FFHAND CX, 0F0FHMOV [10H], CX程序段3 0 0 0 0 0 0(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 PTR[SI],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,RCR4.实验容(1)创建COM TEMPLATE程序,输入以下程序段,单步执行并记录标志位的变化情况(提示:在emulator对话框中,单击按钮可以察看标志寄存器的值)。