微机原理Emu8086仿真软件实验讲义Word文档格式.docx

上传人:b****4 文档编号:8046622 上传时间:2023-05-09 格式:DOCX 页数:67 大小:37.95KB
下载 相关 举报
微机原理Emu8086仿真软件实验讲义Word文档格式.docx_第1页
第1页 / 共67页
微机原理Emu8086仿真软件实验讲义Word文档格式.docx_第2页
第2页 / 共67页
微机原理Emu8086仿真软件实验讲义Word文档格式.docx_第3页
第3页 / 共67页
微机原理Emu8086仿真软件实验讲义Word文档格式.docx_第4页
第4页 / 共67页
微机原理Emu8086仿真软件实验讲义Word文档格式.docx_第5页
第5页 / 共67页
微机原理Emu8086仿真软件实验讲义Word文档格式.docx_第6页
第6页 / 共67页
微机原理Emu8086仿真软件实验讲义Word文档格式.docx_第7页
第7页 / 共67页
微机原理Emu8086仿真软件实验讲义Word文档格式.docx_第8页
第8页 / 共67页
微机原理Emu8086仿真软件实验讲义Word文档格式.docx_第9页
第9页 / 共67页
微机原理Emu8086仿真软件实验讲义Word文档格式.docx_第10页
第10页 / 共67页
微机原理Emu8086仿真软件实验讲义Word文档格式.docx_第11页
第11页 / 共67页
微机原理Emu8086仿真软件实验讲义Word文档格式.docx_第12页
第12页 / 共67页
微机原理Emu8086仿真软件实验讲义Word文档格式.docx_第13页
第13页 / 共67页
微机原理Emu8086仿真软件实验讲义Word文档格式.docx_第14页
第14页 / 共67页
微机原理Emu8086仿真软件实验讲义Word文档格式.docx_第15页
第15页 / 共67页
微机原理Emu8086仿真软件实验讲义Word文档格式.docx_第16页
第16页 / 共67页
微机原理Emu8086仿真软件实验讲义Word文档格式.docx_第17页
第17页 / 共67页
微机原理Emu8086仿真软件实验讲义Word文档格式.docx_第18页
第18页 / 共67页
微机原理Emu8086仿真软件实验讲义Word文档格式.docx_第19页
第19页 / 共67页
微机原理Emu8086仿真软件实验讲义Word文档格式.docx_第20页
第20页 / 共67页
亲,该文档总共67页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

微机原理Emu8086仿真软件实验讲义Word文档格式.docx

《微机原理Emu8086仿真软件实验讲义Word文档格式.docx》由会员分享,可在线阅读,更多相关《微机原理Emu8086仿真软件实验讲义Word文档格式.docx(67页珍藏版)》请在冰点文库上搜索。

微机原理Emu8086仿真软件实验讲义Word文档格式.docx

打印文件

exporttoHTML

转换为超文本文件

exit

退出

edit

编辑

undo

取消

redo

重复

cut

剪切

cope

复制

paste

粘贴

select

all

选择全部

find

查找

next

查找下一个

replace

代替

indent

缩进

outdent

凸出

comment

block

将被选块变为注释

uncommentblock

将被注释变为指令

advanced

editor

高级宏汇编

macros

高级设置

Showline

显示行编号

numbers

tabitfyselection

空格转换为定位字元

untabitfy

定位字元转换为空格

selection

lowercase

用小写字母表示

uppercase

用大写字母表示

displaywhite

显示出空格出空间

space

bookmark

书签

togglebookmark

在光标处放置标签

previous

跳到上一个标签处

nextbookmark

跳到下一个标签处

jumptofirst

跳到第一个标签处

jumptolast

跳到最后一个标签处

clearall

清除所有标签

assembler

汇编

compile

编译

compileandload

编译并加载到真器中

intheemulation

fasm

Fasm汇编

setoutput

设置输出文件夹

directory

emulator

真器

showemulator

显示真窗口

assembleand

loadinthe

math

数学计算

multibase

多进制基本计算器

calculator

baseconverter

基本转换器

asciicode

ASCII码表

help

帮助

documentation

文档及指南

andtutorials

checkforan

软件更新检查

update

about

关于软件

四.仿真调试

当用户完成程序编译后,利用工具栏中的“emulate”按钮可将编译好的文件加载到仿真器进行真调试。

除使用“emulate”按钮外,用户也可以用菜单栏中的assembler/compileandloadintheemulation或emulator/assembleandloadintheemulator打开仿真器。

仿真器界面如图5所示。

当用户将程序加载到仿真器后,会同时打开仿真器界面和源程序界面,用户在仿真器界面中也可以同时看到源代码和编译后的机器码。

点击的任意一条源程序指令,则对应的机器代码显示为被选显示状态,与此同时,上面的代码指针也会相应变化。

用户也可以通过这种操作了解,数据段和堆栈段中各变量或数据在存储器中的情况。

用户可以利用工具栏中的“singlestep”按钮进行单步跟踪调试,以便仔细观察各寄存器、存储器、变量、标记位等情况,这对于程序初始调试时十分有用;

当程序调试完毕,或需要连续运行观察时,则可以使用“run”按钮;

当希望返

回上一步操作时,则可以使用“stepback”按钮;

若单击“reload”按钮,则真器会重新加载程序,并将指令指针指向程序的第一条指令;

您也可以利用“load”按钮,从您保存的文件夹中加载其它程序。

用户除使用上述工具栏中的按钮进行仿真调试外,还可以利用其菜单中的其它功能进行更高级的调试和设置。

菜单的详细功能见表2所示。

表2真器菜单功能

loadexecutable

加载要执行的程序

reload

重新加载程序

examples

打开实例

resetemulatorandram

复位真器和RAM

setcommandlineparameter

设置命令行参数

settheemulator

’sstate

保存真器设置

loadformpreviousstate

载入原先保存的设置

multibasecalculator

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

打开标记位窗口

lexical

flaganalyser

打开文本说明格式的标记

位窗口

打开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:

7C00toboot

将存储器中07C00单元开

始的512个字节写到软盘

sector

(floppy_0)(

write

“.bin”filetofloppy

将bin文件写到软盘中

createnewfloppydrive

创建一个新的软盘

2.实验目的

(1)熟悉emu8086集成环境和调试器的使用。

(2)掌握部分DOS功能调用使用方法。

3.实验内容

本实验要求显示一串字符。

注释:

INT10H是由BIOS对屏幕及显示器所提供的服务程序,这些服务程序也加挂在INT10H内。

使用INT10H中断服务程序时,先指定AH寄存器为下表编号其中之一,该编号表示欲调用的

功用,而其他寄存器的详细说明,参考表后文字,当一切设定好之后再调用INT10H。

AH:

00H—设置显示器模式

AL:

03H—80×

2516色

文本

AH:

10H

03H

—设置颜色中断。

—触发闪烁/亮显位

4.参考程序:

name"

hi-world"

;

thisexampleprintsout"

helloworld!

"

bywritingdirectlytovideomemory.

invgamemory:

firstbyteisasciicharacter,bytethatfollowsischaracterattribute.

ifyouchangethesecondbyte,youcanchangethecolorof

thecharacterevenafteritisprinted.

characterattributeis8bitvalue,

high4bitssetbackgroundcolorandlow4bitssetforegroundcolor.

hex

color

0

0000

black

1

0001

blue

2

0010

green

3

0011

cyan

4

0100

red

5

0101

magenta

6

0110

brown

7

0111

lightgray

8

1000

darkgray

9

1001

lightblue

a

1010

lightgreen

b

1011

lightcyan

c

1100

lightred

d

1101

lightmagenta

e

1110

yellow

f

1111

white

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.mov

mov

ax,0b800h

ds,ax

改为

ds,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输入机器,则运算如下:

+)1000

结果大于9

+)0110

加6

修正

10011

即13

的BCD码

结果是0011

,即十进制数

3,还产生了进位。

5+8=13,结论正确。

(2)将8以8421BCD输入机器,则运算如下:

10000

加6修正

1011016

结果是0110,即十进制的

6,而且产生进位。

8+8=16,结论正确。

(2)非压缩型BCD码加法调整指令AAA(ASCIIAdjustforAddition)

指令格式:

AAA

AAA也称为加法的ASCII调整指令。

指令后面不写操作数,但实际上隐含累加器操作数

AL和AH。

指令的操作为:

如果(AL)∧0FH>

9,或(AF)=1

则(AL)←(AL)+06H

(AH)←(AH)+1

(AF)←1

(CF)←(AF)

(AL)←((AL)∧0FH)

否则(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

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2