1、微机原理EMU8086使用及指令系统熟悉公司名称实验一 EMU8086使用及指令系统熟悉微机原理上机实验日期一、实验要求1熟悉并掌握EMU8086 汇编语言调试环境;2学习8086的指令系统,输入简单的指令,观察各寄存器、内存相关单元以及处理器标志位的变化(数据传送类指令,算数运算类指令,逻辑运算类指令,标志处理和CPU控制类指令,移位和循环移位类指令,处理器控制类指令等,要求每类指令至少一个用例。具体用例自行设计,可参考教材用例);3学习汇编语言程序设计的基本步骤和方法;4学会使用EMU8086 debug调试程序;5编写一个简单的程序:将“This is my first ASM prog
2、ram-姓名(汉语拼音各人的姓名)”放在DS=1000H,BX=0000H开始的存储器单元中,然后将该内容搬移到BX=0100H开始的单元中,最后将该字符串通过DOS功能调用显示在屏幕上。二、实验目的1学习EMU8086仿真开发环境的使用,理解和掌握汇编语言编程的基本步骤;2熟悉8086指令系统;3熟悉变量、常量及伪指令的使用;4熟悉内存单元的存储结构,字符串的处理以及简单的编程。三、实验过程(调试分析)3.1熟悉并掌握EMU8086汇编调试环境此为EMU8086新建汇编源程序的界面,对应有四种模板可以挑选:COM无需分段,所有内容均放在代码段中,程序代码默认从ORG 0100H开始EXE需要
3、分段,内容按代码段、数据段、堆栈段划分,编译器自动完成空间的分配BIN二进制文件,适用于所有用户定义的结构类型BOOT适用于在软盘中创建的文件empty workspace可以创建空的文档此为一个EXE的模板3.2测试几类简单的指令3.2.1数据传送指令测试一name test movorg 100hMOV AX, 1234HMOV BH, 12HMOV BL, 34HMOV CX, 12MOV DX, CX MOV SP, AX测试二name test mov2org 100hMOV AX, 2000HMOV DS, AX MOV 1000H, AMOV 1001H, BMOV SI, 10
4、00HMOV AX, SIHLT3.2.2算数运算指令计算a*b+c-18其中a=34H, b=56H, c=0E7Hdata segment DAT1 DB 34H DAT2 DB 56H DAT3 DB 0E7H DATY DW ?endsstack segment dw 128 dup(0)endscode segmentstart: ASSUME DS:DATA, SS:STACK, CS:CODE MOV AX, STACK MOV SS, AX MOV AX, DATA MOV DS, AX MOV AL, DAT1 MOV BL, DAT2 IMUL BL MOV BX, AX
5、MOV AL, DAT3 CBW ADD AX, BX SUB AX, 18 MOV DATY, AX endsend start3.2.3逻辑运算指令通过单步调试可以追踪到每一条指令执行所产生的效果,此处指放出最后结果的截图name test logic operationorg 100hMOV AX, 45FCHMOV BX, 0034HAND AL, 0FHOR BX, 000FHXOR AH, 0FHNOT BHHLT3.2.4标志处理和CPU控制类指令name test control and flagsorg 100hCLC;0-CFCMC;CF-CFSTD;1-DFCLI;0-I
6、FNOPNOP;blankHLT;pause3.2.5循环和移位类指令name test circle replacementorg 100hMOV BL, 01110010BSTC;1-CFMOV CL, 3RCR BL, CLHLT算数移位三次后结果应该为BL=10101110B=AEH3.3编写一个简单的程序实现字符串的储存、搬移和显示不分段,仅使用代码代码段,使用逐个字符存入name FIRST PROGRAMorg 100h; set segment register:MOV AX, 1000HMOV DS, AX MOV BX, 0000H; print This is my fi
7、rst ASM program-YongRongFengMOV 02h, TMOV 04h, hMOV 06h, iMOV 08h, sMOV 0ah, MOV 0ch, mMOV 0eh, y MOV 10h, MOV 12h, fMOV 14h, iMOV 16h, rMOV 18h, s MOV 1ah, tMOV 1ch, MOV 1eh, AMOV 20h, SMOV 22h, MMOV 24h, MOV 26h, pMOV 28h, rMOV 2ah, oMOV 2ch, gMOV 2eh, r MOV 30h, aMOV 32h, mMOV 34h, - MOV 36h, YMO
8、V 38h, aMOV 3ah, n MOV 3ch, gMOV 3eh, RMOV 40h, oMOV 42h, nMOV 44h, gMOV 46h, FMOV 48h, eMOV 4ah, nMOV 4ch, gMOV CX, 38 ; times of moving charactersMOV BX, 0002H ;move stringmove: MOV AX, BX MOV BX+0100H, AX ADD BX, 2LOOP move ;print screen MOV BX, 0102HMOV CX, 38 print: MOV DL, BX MOV AH, 02H INT 2
9、1H ADD BX, 2 LOOP print ;return DOS MOV AH, 4CHINT 21Hret分段并使用字符串输入,字符串显示name FIRST PROGRAM USE HEXdata segment HEX DB This is my first ASM program-YangRongFeng,$endsstack segment dw 128 dup(0)endscode segmentstart: ;You need to correspond the segment ASSUME CS:CODE, DS:DATA, SS:STACK MOV AX, STACK MOV SS, AX MOV SP, 100 MOV AX, DATA MOV DS, AX ;print hex on the screen MOV DX, OFFSET HEX MOV AH, 9 INT 21H MOV AH, 4CH INT 21H;return DOS endsend start
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1