微机实验操作.docx

上传人:b****5 文档编号:11760681 上传时间:2023-03-31 格式:DOCX 页数:70 大小:763.54KB
下载 相关 举报
微机实验操作.docx_第1页
第1页 / 共70页
微机实验操作.docx_第2页
第2页 / 共70页
微机实验操作.docx_第3页
第3页 / 共70页
微机实验操作.docx_第4页
第4页 / 共70页
微机实验操作.docx_第5页
第5页 / 共70页
点击查看更多>>
下载资源
资源描述

微机实验操作.docx

《微机实验操作.docx》由会员分享,可在线阅读,更多相关《微机实验操作.docx(70页珍藏版)》请在冰豆网上搜索。

微机实验操作.docx

微机实验操作

实验一查看CPU和内存,用机器指令和汇编指令编程

2实验任务

(1)使用Debug,将下面的程序段写入内存,逐条执行,观察每条指令执行后,CPU中相关寄存器中内容的变化。

机器码汇编指令寄存器

b8204emovax,4E20Hax=4E20H

051614addax,1416Hax=6236H

bb0020movBX,2000Hbx=2000H

01d8addax,bxax=8236H

89c3movbx,axbx=8236H

01d8addax,bxax=046CH

b81a00movax,001AHax=001AH

bb2600movbx,0026Hbx=0026H

00d8addal,blax=0040H

00dcaddah,blax=2640H

00c7addbh,albx=4026H

b400movah,0ax=0040H

00d8addal,blax=0066H

049caddal,9CHax=0002H

Microsoft(R)WindowsDOS

(C)CopyrightMicrosoftCorp1990-2001.

C:

\DOCUME~1\ADMINI~1>debug

-a

0C1C:

0100movax,4e20

0C1C:

0103addax,1416

0C1C:

0106movbx,2000

0C1C:

0109addax,bx

0C1C:

010Bmovbx,ax

0C1C:

010Daddax,bx

0C1C:

010Fmovax,001a

0C1C:

0112movbx,0026

0C1C:

0115addal,bl

0C1C:

0117addah,bl

0C1C:

0119addbh,al

0C1C:

011Bmovah,0

0C1C:

011Daddal,bl

0C1C:

011Faddal,9c

0C1C:

0121

-r

AX=0000BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000

DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=0100NVUPEIPLNZNAPONC

0C1C:

0100B8204EMOVAX,4E20

-t

AX=4E20BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000

DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=0103NVUPEIPLNZNAPONC

0C1C:

0103051614ADDAX,1416

-t

AX=6236BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000

DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=0106NVUPEIPLNZNAPENC

0C1C:

0106BB0020MOVBX,2000

-t

AX=6236BX=2000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000

DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=0109NVUPEIPLNZNAPENC

0C1C:

010901D8ADDAX,BX

-t

AX=8236BX=2000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000

DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=010BOVUPEINGNZNAPENC

0C1C:

010B89C3MOVBX,AX

-t

AX=8236BX=8236CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000

DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=010DOVUPEINGNZNAPENC

0C1C:

010D01D8ADDAX,BX

-t

AX=046CBX=8236CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000

DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=010FOVUPEIPLNZNAPECY

0C1C:

010FB81A00MOVAX,001A

-t

AX=001ABX=8236CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000

DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=0112OVUPEIPLNZNAPECY

0C1C:

0112BB2600MOVBX,0026

-t

AX=001ABX=0026CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000

DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=0115OVUPEIPLNZNAPECY

0C1C:

011500D8ADDAL,BL

-t

AX=0040BX=0026CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000

DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=0117NVUPEIPLNZACPONC

0C1C:

011700DCADDAH,BL

-t

AX=2640BX=0026CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000

DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=0119NVUPEIPLNZNAPONC

0C1C:

011900C7ADDBH,AL

-t

AX=2640BX=4026CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000

DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=011BNVUPEIPLNZNAPONC

0C1C:

011BB400MOVAH,00

-t

AX=0040BX=4026CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000

DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=011DNVUPEIPLNZNAPONC

0C1C:

011D00D8ADDAL,BL

-t

AX=0066BX=4026CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000

DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=011FNVUPEIPLNZNAPENC

0C1C:

011F049CADDAL,9C

-t

AX=0002BX=4026CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000

DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=0121NVUPEIPLNZACPOCY

0C1C:

0121D3990075RCRWORDPTR[BX+DI+7500],CLDS:

B526=0000

-q

实验一查看CPU和内存,用机器指令和汇编指令编程

(2)将下面的3条指令写入从2000:

0开始的内存单元中,利用这3条指令计算2的8次方。

movax,1

addax,ax

jmp2000:

0003

Microsoft(R)WindowsDOS

(C)CopyrightMicrosoftCorp1990-2001.

C:

\DOCUME~1\ADMINI~1>debug

-a2000:

0

2000:

0000movax,1

2000:

0003addax,ax

2000:

0005jmp2000:

0003

2000:

0007

-rcs

CS0C1C

:

2000

-rip

IP0100

:

0000

-r

AX=0000BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000

DS=0C1CES=0C1CSS=0C1CCS=2000IP=0000NVUPEIPLNZNAPONC

2000:

0000B80100MOVAX,0001

-t

AX=0001BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000

DS=0C1CES=0C1CSS=0C1CCS=2000IP=0003NVUPEIPLNZNAPONC

2000:

000301C0ADDAX,AX

-t

AX=0002BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000

DS=0C1CES=0C1CSS=0C1CCS=2000IP=0005NVUPEIPLNZNAPONC

2000:

0005EBFCJMP0003

-t

AX=0002BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000

DS=0C1CES=0C1CSS=0C1CCS=2000IP=0003NVUPEIPLNZNAPONC

2000:

000301C0ADDAX,AX

-t

AX=0002BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000

DS=0C1CES=0C1CSS=0C1CCS=2000IP=0003NVUPEIPLNZNAPONC

2000:

000301C0ADDAX,AX

-t

AX=0004BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000

DS=0C1CES=0C1CSS=0C1CCS=2000IP=0005NVUPEIPLNZNAPONC

2000:

0005EBFCJMP0003

-t

AX=0004BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000

DS=0C1CES=0C1CSS=0C1CCS=2000IP=0003NVUPEIPLNZNAPONC

2000:

000301C0ADDAX,AX

-t

AX=0008BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000

DS=0C1CES=0C1CSS=0C1CCS=2000IP=0005NVUPEIPLNZNAPONC

2000:

0005EBFCJMP0003

-t

AX=0008BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000

DS=0C1CES=0C1CSS=0C1CCS=2000IP=0003NVUPEIPLNZNAPONC

2000:

000301C0ADDAX,AX

-q

实验一查看CPU和内存,用机器指令和汇编指令编程

(3)查看内存中的内容

PC主板上的ROM中有个一出产日期,在内存FFF00H-FFFFFH的某几个单元中,请找到这个出产日期并试图改变它。

Microsoft(R)WindowsDOS

(C)CopyrightMicrosoftCorp1990-2001.

C:

\DOCUME~1\ADMINI~1>debug

-dffff:

0f

FFFF:

0000EA5BE000F031322F-32352F303700FC59.[...12/25/07..Y

-q

地址C0000~FFFFF的内存单元为只读存储器,写入数据操作是无效的。

因此出产日期无法改变。

 

下面内容摘自于网上

还有另一种情况,如果你发现你能修改ROM中的生产日期,那么原因如下:

每个计算机的结构都不一样,教材考虑的是普通8086PC机上的效果,个别计算机的效果可能不同。

也就是说在你的计算机中这个内存是可修改的

所以,认为所有的计算机某些地址的内存不能修改是片面的。

书上说rom是只读的你就不去验证了吗?

如何验证呢?

我觉得这个实验最大的好处不是让我们验证了这个知识点,而是提醒我们要有怀疑的精神,怀疑之后再去验证才能跟深刻的理解知识,提升自己的能力,甚至还会发现有些书上描述的不准确甚至错误的地方。

--引用这几本书综合研究的三个问题:

都再用,我们就非得用吗?

规定了,我们就只知道遵守吗?

司空见惯,我们就不怀疑了吗?

尽信书不如无书大概也有这个道理吧^_^

实验2用机器指令和汇编指令编程

(1)使用DEBUG,将上面的程序段写入内存,逐条执行,根据指令执行后的实际运行情况填空。

movax,ffff

movds,ax

movax,2200

movss,ax

movsp,0100

movax,[0];ax=5BEAH

addax,[2];ax=5CCAH

movbx,[4];bx=31F0H

addbx,[6];bx=6122H

pushax;sp=00FEH,修改的内存单元地址是2200:

00FE内容为5CCAH

pushbx;sp=00FCH,修改的内存单元地址是2200:

00FC内容为6122H

popax;sp=00FCH,ax=6122H

popbx;sp=00FEH,bx=5CCAH

push[4];sp=00FEH,修改的内存单元地址是2200:

00FE内容为31F0

push[6];sp=00FCH,修改的内存单元地址是2200:

00FC内容为2F32

此实验答案不定,需根据每台机器的实际运行情况。

Microsoft(R)WindowsDOS

(C)CopyrightMicrosoftCorp1990-2001.

C:

\DOCUME~1\ADMINI~1>debug

-a

0C1C:

0100movax,ffff

0C1C:

0103movds,ax

0C1C:

0105movax,2200

0C1C:

0108movss,ax

0C1C:

010Amovsp,0100

0C1C:

010Dmovax,[0]

0C1C:

0110addax,[2]

0C1C:

0114movbx,[4]

0C1C:

0118addbx,[6]

0C1C:

011Cpushax

0C1C:

011Dpushbx

0C1C:

011Epopax

0C1C:

011Fpopbx

0C1C:

0120push[4]

0C1C:

0124push[6]

0C1C:

0128

-r

AX=0000BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000

DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=0100NVUPEIPLNZNAPONC

0C1C:

0100B8FFFFMOVAX,FFFF

-t

AX=FFFFBX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000

DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=0103NVUPEIPLNZNAPONC

0C1C:

01038ED8MOVDS,AX

-t

AX=FFFFBX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000

DS=FFFFES=0C1CSS=0C1CCS=0C1CIP=0105NVUPEIPLNZNAPONC

0C1C:

0105B80022MOVAX,2200

-t

AX=2200BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000

DS=FFFFES=0C1CSS=0C1CCS=0C1CIP=0108NVUPEIPLNZNAPONC

0C1C:

01088ED0MOVSS,AX

-t

AX=2200BX=0000CX=0000DX=0000SP=0100BP=0000SI=0000DI=0000

DS=FFFFES=0C1CSS=2200CS=0C1CIP=010DNVUPEIPLNZNAPONC

0C1C:

010DA10000MOVAX,[0000]DS:

0000=5BEA

-dffff:

0f

FFFF:

0000EA5BE000F031322F-32352F303700FC59.[...12/25/07..Y

-t

AX=5BEABX=0000CX=0000DX=0000SP=0100BP=0000SI=0000DI=0000

DS=FFFFES=0C1CSS=2200CS=0C1CIP=0110NVUPEIPLNZNAPONC

0C1C:

011003060200ADDAX,[0002]DS:

0002=00E0

-t

AX=5CCABX=0000CX=0000DX=0000SP=0100BP=0000SI=0000DI=0000

DS=FFFFES=0C1CSS=2200CS=0C1CIP=0114NVUPEIPLNZNAPENC

0C1C:

01148B1E0400MOVBX,[0004]DS:

0004=31F0

-t

AX=5CCABX=31F0CX=0000DX=0000SP=0100BP=0000SI=0000DI=0000

DS=FFFFES=0C1CSS=2200CS=0C1CIP=0118NVUPEIPLNZNAPENC

0C1C:

0118031E0600ADDBX,[0006]DS:

0006=2F32

-t

AX=5CCABX=6122CX=0000DX=0000SP=0100BP=0000SI=0000DI=0000

DS=FFFFES=0C1CSS=2200CS=0C1CIP=011CNVUPEIPLNZNAPENC

0C1C:

011C50PUSHAX

-t

AX=5CCABX=6122CX=0000DX=0000SP=00FEBP=0000SI=0000DI=0000

DS=FFFFES=0C1CSS=2200CS=0C1CIP=011DNVUPEIPLNZNAPENC

0C1C:

011D53PUSHBX

-t

AX=5CCABX=6122CX=0000DX=0000SP=00FCBP=0000SI=0000DI=0000

DS=FFFFES=0C1CSS=2200CS=0C1CIP=011ENVUPEIPLNZNAPENC

0C1C:

011E58POPAX

-t

AX=6122BX=6122CX=0000DX=0000SP=00FEBP=0000SI=0000DI=0000

DS=FFFFES=0C1CSS=2200CS=0C1CIP=011FNVUPEIPLNZNAPENC

0C1C:

011F5BPOPBX

-t

AX=6122BX=5CCACX=0000DX=0000SP=0100BP=0000SI=0000DI=0000

DS=FFFFES=0C1CSS=2200CS=0C1CIP=0120NVUPEIPLNZNAPENC

0C1C:

0120FF360400PUSH[0004]DS:

0004=31F0

-t

AX=6122BX=5CCACX=0000DX=0000SP=00FEBP=0000SI=0000DI=0000

DS=FFFFES=0C1CSS=2200CS=0C1CIP=0124NVUPEIPLNZNAPENC

0C1C:

0124FF360600PUSH[0006]DS:

0006=2F32

-t

AX=6122BX=5CCACX=0000DX=0000SP=00FCBP=0000SI=0000DI=0000

DS=FFFFES=0C1CSS=2200CS=0C1CIP=0128NVUPEIPLNZNAPENC

0C1C:

012816PUSHSS

-q

实验2用机器指令和汇编指令编程

(2)仔细观察图3.19中的实验过程,然后分析:

为什么2000:

0~2000:

F中的内容会发生改变?

图3.19用Debug进行实验的示例

答:

因为在debug使用T等指令引发了中断造成的,中断过程使用当前栈空间存放cpu关键数据,所以,你的栈里就有些不是你操作的数据了。

这个问题后面会学到,不过这里也要有个印象,因为如果是在中断过程中压栈是栈越界的话,在windows下的命令窗口会强制关闭的。

这个可能在你跟踪一些程序的时候会遇到,到时候有个思考方向。

实验3编程、编译、连接、跟踪

(1)将下面的程序保存为t1.asm文件,将其生成可执行文件t1.exe。

assumecs:

codesg

codesgsegment

movax,2000H

movss,ax

movsp,0

addsp,10

popax

popbx

pushax

pushbx

popax

popbx

movax,4c00h

int21H

codesgends

end

 

按书中所示,从DOS进入EDIT

完成后保存文件为t1.asm

退出EDIT,进行编译,连接

生成可执行文件t1.exe

实验3

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

当前位置:首页 > 初中教育 > 中考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1