微机原理Emu8086仿真软件实验讲义Word文档下载推荐.docx
- 文档编号:18724989
- 上传时间:2022-12-31
- 格式:DOCX
- 页数:25
- 大小:125.08KB
微机原理Emu8086仿真软件实验讲义Word文档下载推荐.docx
《微机原理Emu8086仿真软件实验讲义Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《微机原理Emu8086仿真软件实验讲义Word文档下载推荐.docx(25页珍藏版)》请在冰豆网上搜索。
exporttoHTML
转换为超文本文件
exit
退出
edit
编辑
undo
取消
redo
重复
cut
剪切
cope
复制
paste
粘贴
selectall
选择全部
find
查找
findnext
查找下一个
replace
代替
indent
缩进
outdent
凸出
commentblock
将被选块变为注释
uncommentblock
将被注释变为指令
advancededitormacros
高级宏汇编
advanced
高级设置
Showlinenumbers
显示行编号
tabitfyselection
空格转换为定位字元
untabitfyselection
定位字元转换为空格
lowercaseselection
用小写字母表示
uppercaseselection
用大写字母表示
displaywhitespace
显示出空格出空间
bookmark
书签
togglebookmark
在光标处放置标签
previousbookmark
跳到上一个标签处
nextbookmark
跳到下一个标签处
jumptofirst
跳到第一个标签处
jumptolast
跳到最后一个标签处
clearallbookmark
清除所有标签
assembler
汇编
compile
编译
compileandloadintheemulation
编译并加载到真器中
fasm
Fasm汇编
setoutputdirectory
设置输出文件夹
emulator
真器
showemulator
显示真窗口
assembleandloadintheemulator
math
数学计算
multibasecalculator
多进制基本计算器
baseconverter
基本转换器
asciicode
ASCII码表
help
帮助
documentationandtutorials
文档及指南
checkforanupdate
软件更新检查
about
关于软件
四.仿真调试
当用户完成程序编译后,利用工具栏中的“emulate”按钮可将编译好的文件加载到仿真器进行真调试。
除使用“emulate”按钮外,用户也可以用菜单栏中的assembler/compileandloadintheemulation或emulator/assembleandloadintheemulator打开仿真器。
仿真器界面如图5所示。
当用户将程序加载到仿真器后,会同时打开仿真器界面和源程序界面,用户在仿真器界面中也可以同时看到源代码和编译后的机器码。
点击的任意一条源程序指令,则对应的机器代码显示为被选显示状态,与此同时,上面的代码指针也会相应变化。
用户也可以通过这种操作了解,数据段和堆栈段中各变量或数据在存储器中的情况。
用户可以利用工具栏中的“singlestep”按钮进行单步跟踪调试,以便仔细观察各寄存器、存储器、变量、标记位等情况,这对于程序初始调试时十分有用;
当程序调试完毕,或需要连续运行观察时,则可以使用“run”按钮;
当希望返回上一步操作时,则可以使用“stepback”按钮;
若单击“reload”按钮,则真器会重新加载程序,并将指令指针指向程序的第一条指令;
您也可以利用“load”按钮,从您保存的文件夹中加载其它程序。
用户除使用上述工具栏中的按钮进行仿真调试外,还可以利用其菜单中的其它功能进行更高级的调试和设置。
菜单的详细功能见表2所示。
表2真器菜单功能
loadexecutable…
加载要执行的程序
reload
重新加载程序
examples
打开实例
resetemulatorandram
复位真器和RAM
setcommandlineparameter
设置命令行参数
settheemulator’sstate
保存真器设置
loadformpreviousstate
载入原先保存的设置
debug
singlestep
单步跟踪
singleover
单步
stepback
单步返回
stoponcondition
设置停止运行的条件
rununtil
运行到光标处
run
连续运行
setbreakpoint
在光标处设置断点
clearbreakpoint
清除所有断点
showcurrentbreakpoint
显示当前断点指令
showcurrentinstruction(atCS:
IP)
显示当前指令
setCS:
IPtoselectedposition
将被选指令设定为当前指令
view
观察
loganddebug.exeemulation
打开debug.调试窗口
extendvalueviewer
打开扩展数值观察器
stack
打开堆栈窗口
variables
打开变量窗口
symboltable
打开标记表
listing
显示源程序及目标文件内容
originalsourcecode
打开源程序代码窗口
option
软件高级设置,可对字体、颜色、文本格式、键盘输入等进行设置
arithmetic&
logicalunit
选择打开存储器、寄存器等单元,与AUX按钮功能相同
flag
打开标记位窗口
lexicalflaganalyser
打开文本说明格式的标记位窗口
asciicode
打开ASCII码表
emulatorscreen
打开模拟屏幕窗口
external
外部真器
startdebug.exe
启动windows的debug真调试器
commandprompt
打开DOS命令窗口
在DOS环境下运行程序
virtualdevices
虚拟设备
LED-Disply.exe
LED显示器
printer.exe
打印机
robit.exe
机器人
simple.exe
读写端口
simplest.exe
在屏幕上读写端口
stepper_motor.exe
步进马达
thermometer.exe
温度控制
tranffic_lights
交通灯控制
VGA_STATE.exe
显示屏控制
Virtualdrive
虚拟驱动盘
bootformvirtualfloppy(floppy_0)
从虚拟的软盘中导入程序
write512byteat0000:
7C00tobootsector(floppy_0)(
将存储器中07C00单元开始的512个字节写到软盘中
write“.bin”floppy
将bin文件写到软盘中
createnewfloppydrive
创建一个新的软盘
2.实验目的
(1)熟悉emu8086集成环境和调试器的使用。
(2)掌握部分DOS功能调用使用方法。
3.实验内容
本实验要求显示一串字符。
注释:
INT
10H是由BIOS对屏幕及显示器所提供的服务程序,这些服务程序也加挂在INT
10H内。
使用INT
10H中断服务程序时,先指定AH寄存器为下表编号其中之一,该编号表示欲调用的功用,而其他寄存器的详细说明,参考表后文字,当一切设定好之后再调用
10H。
AH:
00H
—设置显示器模式
AL:
03H—80×
25
16色
文本
AH:
10H
—设置颜色中断。
03H
—
触发闪烁/亮显位
4.参考程序:
name"
hi-world"
;
thisexampleprintsout"
helloworld!
"
bywritingdirectlytovideomemory.
invgamemory:
firstbyteisasciicharacter,bytethatfollowsischaracterattribute.
ifyouchangethesecondbyte,youcanchangethecolorof
thecharacterevenafteritisprinted.
characterattributeis8bitvalue,
high4bitssetbackgroundcolorandlow4bitssetforegroundcolor.
hexbincolor
00000black
10001blue
20010green
30011cyan
40100red
50101magenta
60110brown
70111lightgray
81000darkgray
91001lightblue
a1010lightgreen
b1011lightcyan
c1100lightred
d1101lightmagenta
e1110yellow
f1111white
org100h
setvideomode
movax,3;
textmode80x25,16colors,8pages(ah=0,al=3)
int10h;
doit!
cancelblinkingandenableall16colors:
movax,1003h
movbx,0
int10h
setsegmentregister:
movax,0b800h
movds,ax
print"
helloworld"
firstbyteisasciicode,secondbyteiscolorcode.
mov[02h],'
H'
mov[04h],'
e'
mov[06h],'
l'
mov[08h],'
mov[0ah],'
o'
mov[0ch],'
'
mov[0eh],'
W'
mov[10h],'
mov[12h],'
r'
mov[14h],'
mov[16h],'
d'
mov[18h],'
!
'
colorallcharacters:
movcx,12;
numberofcharacters.
movdi,03h;
startfrombyteafter'
h'
c:
mov[di],11101100b;
lightred(1100)onyellow(1110)
adddi,2;
skipovernextasciicodeinvgamemory.
loopc
waitforanykeypress:
movah,0
int16h
ret
5.总结思考
1.DS数据段寄存器:
数据所存放段的起始地址b800h,观察内存b800:
0000的存放内容
2.movax,0b800h
改为movds,0b800h是否可行
实验二十进制数的BCD码加法运算程序实验
1.实验目的
(1)掌握运算类指令编程及调试方法。
(2)掌握运算类指令对各状态标志位的影响及测试方法。
2.实验原理
(1)二进制数在计算机上进行运算是非常简单的。
但是,通常人们习惯于用十进制数。
在计算机中十进制数是用BCD码来表示的,BCD码有两类:
一类叫压缩型BCD码,一类叫非压缩型BCD码。
压缩BCD码与非压缩BCD码的区别——压缩BCD码的每一位用4位二进制表示,一个字节表示两位十进制数。
例如10010110B表示十进制数96D;
非压缩BCD码用1个字节表示一位十进制数,高四位总是0000,低4位的0000~1001表示0~9.例如00001000B表示十进制数8.
8421BCD码是最基本和最常用的BCD码,它和四位自然二进制码相似,各位的权值为8、4、2、1,故称为有权BCD码。
和四位自然二进制码不同的是,它只选用了四位二进制码中前10组代码,即用0000~1001分别代表它所对应的十进制数,余下的六组代码不用。
用BCD码进行加、减、乘、除运算,通常采用两种方法:
一种是在指令系统中设置一套专用于BCD码运算的指令;
另一种是利用二进制数的运算指令算出结果,然后再用专门的指令对结果进行修正(调整),使之转变为正确的BCD码表示的结果。
8086/8088指令系统所采用的是后一种方法。
BCD码的运算规则:
BCD码是十进制数,而运算器对数据做加减运算时,都是按二进制运算规则进行处理的。
这样,当将BCD码传送给运算器进行运算时,其结果需要修正。
修正的规则是:
当两个BCD码相加,如果和等于或小于1001(即十进制数9),不需要修正;
如果相加之和在1010到1111(即十六进制数0AH~0FH)之间,则需加6进行修正;
如果相加时,本位产生了进位,也需加6进行修正。
这样做的原因是,机器按二进制相加,所以4位二进制数相加时,是按“逢十六进一”的原则进行运算的,而实质上是2个十进制数相加,应该按“逢十进一”的原则相加,16与10相差6,所以当和超过9或有进位时,都要加6进行修正。
需要修正BCD码运算值的举例。
(1)计算5+8;
(2)计算8+8
解:
(1)将5和8以8421BCD输入机器,则运算如下:
0101
+)1000
1101结果大于9
+)0110加6修正
10011即13的BCD码
结果是0011,即十进制数3,还产生了进位。
5+8=13,结论正确。
(2)将8以8421BCD输入机器,则运算如下:
1000
+)1000
10000结果大于9
+)0110加6修正
1011016的BCD码
结果是0110,即十进制的6,而且产生进位。
8+8=16,结论正确。
(2)非压缩型BCD码加法调整指令AAA
(ASCII
Adjust
for
Addition)
指令格式:
AAA
AAA也称为加法的ASCII调整指令。
指令后面不写操作数,但实际上隐含累加器操作数AL和AH。
指令的操作为:
如果
(AL)∧0FH>
9,或(AF)=1
则
(AL)←(AL)+06H
(AH)←(AH)+1
(AF)←1
(CF)←(AF)
(AL)←((AL)∧0FH)
否则
由上可见,指令将影响AF和CF标志,但状态标志位SF、ZF、PF和OF的状态不确定。
在用AAA指令调整以前,先用指令ADD(多字节加法时用ADC)进行8位数的加法运算,相加结果放在AL中,用AAA指令调整后,非压缩型BCD码结果的低位在AL寄存器,高位在AH寄存器。
3.实验内容:
本实验要求计算X+Y=Z,其中,X、Y、Z为BCD码,其中X=09H,Y=05H。
thisexampleshowstheuseofaaainstruction(asciiadjustafteraddition).
itisusedtoaddhugebcdnumbers.
bcd_aaa"
firstnumber'
9'
:
movah,09h
secondnumber'
5'
moval,05h
al=al+ah=
=09h+05h=0eh
addal,ah
cleartensbyteofbcd
result:
xorah,ah
adjustresulttobcdform,
ah=1,al=4->
'
14'
aaa
printtheresult:
storecontentsof
axregister:
movdx,ax
printfirstdigit:
movah,0eh
converttoascii:
ordh,30h
moval,dh
printseconddigit:
ordl,30h
moval,dl
ret;
returncontroltooperatingsystem.
5总结思考:
(1)xor指令含义;
(2)aaa指令的操作过程
实验三串操作类指令应用程序
(1)掌握串操作类指令编程及调试方法。
(2)掌握串操作类指令对各状态标志位的影响及测试方法。
(1)在计算机中,大部分数据存放在主存中,8086CPU提供了一组处理主存中连续存放的数据串的指令——串操作指令。
串操作指令中,源操作数用寄存器SI寻址,默认在数据段DS中;
目的操作数用寄存器DI寻址,默认在附加段ES中。
每执行一次串操作指令,作为源地址指针的SI和作为目的地址指针的DI将自动修改:
+/-1(对于字节串)或+/-2(对于字串)。
地址指针时增加还是减少取决于方向标志DF。
在系统初始化后或者执行指令CLD指令后,DF=0,此时地址指针增1或2;
在执行指令STD后,DF=1,此时地址指针减1或2。
串操作指令寻址方式:
源操作数和目的操作数分别使用寄存器DS:
[SI]和ES:
[DI]进行间接寻址,源指针DS:
[SI]和目的指针ES:
[DI]将自动进行修改:
±
1、±
2、±
4,其对应的分别是字节操作、字操作和双字操作。
串比较指令:
CMPSB;
字节串比较:
DS:
[SI]-ES:
[DI],SI←SI+/-1,DI←DI+/-1
CMPSW;
字串比较:
[DI],SI←SI+/-2,DI←DI+/-2比较指令的功能是比较源串与目的串是否相同,并根据其减法结果设置标志位;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 Emu8086 仿真 软件 实验 讲义