《计算机原理与应用》实验指导书Word下载.docx

上传人:b****6 文档编号:17153573 上传时间:2022-11-28 格式:DOCX 页数:33 大小:30.28KB
下载 相关 举报
《计算机原理与应用》实验指导书Word下载.docx_第1页
第1页 / 共33页
《计算机原理与应用》实验指导书Word下载.docx_第2页
第2页 / 共33页
《计算机原理与应用》实验指导书Word下载.docx_第3页
第3页 / 共33页
《计算机原理与应用》实验指导书Word下载.docx_第4页
第4页 / 共33页
《计算机原理与应用》实验指导书Word下载.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

《计算机原理与应用》实验指导书Word下载.docx

《《计算机原理与应用》实验指导书Word下载.docx》由会员分享,可在线阅读,更多相关《《计算机原理与应用》实验指导书Word下载.docx(33页珍藏版)》请在冰豆网上搜索。

《计算机原理与应用》实验指导书Word下载.docx

建立新文件。

.I插入命令,格式:

*I或*I[行号],退出插入用CTRL+Z或CTRL+Q。

.L行列表,格式:

*L或*L[行号]或*L[行号1],[行号2]

.C修改命令,格式:

*C或*C[行号]

.D删除命令,格式:

*D或*D[行号]或*D[行号1],[行号2]

.A汇编命令,将汇编器内的源程序汇编成目标程序。

.Q退出汇编器,返回DEBUG状态。

实验一系统认识实验

1.系统操作练习

(1)

从3500H内存单元开始建立0~15共16个数据。

程序如下:

2000MOVDI,3500;

设数据区首址

2003MOVCX,0010;

字节数送CX

2006MOVAX,0000

2009SAHF;

AH送状态寄存器

200AMOVB[DI],AL;

写入一字节

200CINCDI;

修改地址指针

200DINCAX;

修改数据

200EDAA;

十进制调整

200FLOOP200A;

未填完转移

2011JMP2011

要求:

①单步运行,记下每次各寄存器的内容。

②连续运行。

③断点运行,在2009H设断点。

用D命令查看3500H~350FH

2.系统操作练习

(2)

从3500H内存单元开始建立0~15共16个数据传递到3600H单元开始的数据区中。

2000MOVSI,3500;

建立源址指针

2003MOVDI,3600;

目标地址指针

2006MOVCX,0008;

数字送CX

2009MOVAX,W[SI];

取一字

200BMOVW[DI],AX;

送一字

200DINCSI;

修改指针

200EINCSI

200FINCDI

2010INCDI

2011DECCX

2012JNZ2009;

判传完否

2014INT

先在3500H内存单元开始建立16个字节的数据,运行后用D命令显示结果。

要求传送不同的数据三次。

实验二数码转换编程及程序调试

1.将ASCII码表示的十进制数转换为二进制数

2000MOVSI,3500;

源首地址

2003MOVDI,3510;

结果首址

2006MOVBX,000A

2009MOVCX,0004

200CMOVAH,00

200EMOVAL,B[SI]

2010SUBAL,30

2012IMULBX

2014ADDAL,B[SI+01]

2017SUBAL,30

2019INCSI

201ALOOP2012;

转换完否

201CMOVW[DI],AX;

存结果

201EINT;

停机

在3500H~3504H单元存入十进制数12的ASCII码,即E3500,并输入3030303132。

运行后用D命令查3510H应为0C00。

2.将十进制数的ASCII码转换为BCD码

2000MOVCX,0005;

计数器赋初值

2003MOVDI,3500;

ASCII码首址

2006MOVBL,FF;

错误标志送BL

2008MOVAL,B[DI];

ASCII码送AL

200ACMPAL,3A

200CJNB2014;

不低于3A转

200ESUBAL,30;

低于3A取ASCII码

2010JB2014;

低于30转

2012MOVBL,AL;

否则AL送BL

2014MOVAL,BL;

结果或错误标志送AL

2016MOVB[DI+0A],AL

2019INCDI

201ALOOP2006

201CINT

在3500~3504H单元中存入五位十进制数的ASCII码,即:

E3500回车,并输入31、32、33、34、35。

运行后结果在350AH,用D命令显示结果:

0102030405CC。

反复试几组数,考查程序的正确性。

3.将十六位二进制数转换为ASCII码表示的十进制数

2000MOVDX,W[3500];

取二进制数

2004MOVSI,3515;

目标首址

2007DECSI

2008MOVAX,DX

200AMOVDX,0000

200DMOVCX,000A

2010DIVCX;

除10

2012XCHGAX,DX

2013ADDAL,30

2015MOVB[SI],AL

2017CMPDX,0000

201AJNE2007

201CCMPSI,3510;

填余下高位为0

2020JZ2029;

对应的ASCII码

2022DECSI

2023MOVAL,30

2025MOVB[SI],AL

2027JMP201C

2029INT

在3500~3501H单元中存放0C00,运行程序并检查结果,应看到3510H~3514H单元中的数依次为3030303132。

反复试几组数,并运行程序、观察结果。

4.十六进制数转为ASCII码

2000MOVCX,0004

2003MOVDI,3500

2006MOVDX,W[DI]

200AANDAX,000F;

取低4位

200DCMPAL,0A;

判是否“0~9”

200FJB2013;

是“0~9”转

2011ADDAL,07;

是“A~F”加7

2013ADDAL,30;

转为ASCII码

2015MOVB[DI+0A],AL

2018INCDI

2019PUSHCX;

保护计数器内容

201AMOVCL,04;

移位次数送CL

201CSHRDX,CL

201EPOPCX

201FLOOP2008

2021INT

在3500~3501H单元中存入四位十六进制数203B,即:

E3500回车,并输入3B、20。

运行后结果在350AH,用D命令查看结果:

42333032。

反复试几组,验证程序正确性。

5.BCD码转为二进制码

2006MOVAL,B[DI]

2008ADDAL,AL;

乘2

200AMOVBL,AL

200CADDAL,AL;

200EADDAL,AL;

2010ADDAL,BL;

乘10

2012INCDI

2013MOVAH,00

2015ADDAL,B[DI];

BCD码十位+个位

2017MOVW[DI+0F],AX;

201AINCDI

201BLOOP2006

201DINT

在3500~3507单元中存入四个十进制数(12、34、56、78)的BCD码,即E3500回车,输入01、02、03、04、05、06、07、08。

运行后结果在3510H,用D命令查看结果,应为0C00220038004E00。

实验三运算类编程实验

(一)加法运算

1.二进制双精度加法运算

2000MOVAX,W[3500];

加数低位送AX

2003ADDAX,W[3504];

两数低位相加

2007MOVW[3508],AX;

存低位和

200AMOVAX,W[3502];

加数高位送AX

200DADCAX,W[3506];

两数高位相加

2011MOVW[350A],AX;

存高位和

2014INT

在3500开始的单元存入A0,65,15,00(即001565A0)在3504开始的单元存入9E,B7,21,00(即0021B79E)。

运行后,结果在3508开始的单元,用D命令查看,应有:

3E1D3700CC。

2.十进制的BCD码相减运算

2000MOVAH,00

2002SAHF

2003MOVCX,0002

2006MOVSI,3500

2009MOVDI,3510

200CMOVAL,B[SI]

200ESBBAL,B[SI+02]

2011DAS

2012PUSHF

2013ANDAL,0F

2015POPF

2016MOVB[DI],AL

201ALOOP200C

在3500~3503H单元,依次存入00、04、02、01(即40和12)运行后结果在3510,应有0802。

(二)乘除运算

1.考察乘法指令MUL、IMUL对状态标志位的影响

取3000H单元开始的10个无符号数,将其各自乘以2,若有溢出,显示“O”,有进位显示“C”,否则只显示间隔符“,”,规定每一组相应的标志显示之间均用“,”来间隔。

这样就可以在数据区放各种试验数来考察乘法对标志的影响。

2000MOVSI,3000;

源数据首址

2003MOVCX,000A;

数据个数

2006MOVBX,0002

取数

200BCLC

200CIMULBX;

200EJO201E;

溢出转

2010JB2022

2012MOVAL,2C;

显示“,”

2014INCSI

2015INCSI

2016MOVAH,01;

显示功能调用

2018INT10

201ALOOP2009;

完否

201CJMP201C;

201EMOVAL,4F;

显示“O”

2020JMP2014

2022MOVAL,43;

显示“C”

2024JMP2014

2026INT

准备10个数存放到3000~3009H单元中,运行程序,观察显示结果并认真分析。

反复试几组数,观察结果。

用MUL指令代替LMUL指令,重复运行程序。

2.考察除法指令DIV、IDIV以及ASCII码调整指令对标志的影响情况

取3000~3009H单元中的五个无符号数,将其用101H除,若有溢出或进位,就分别显示“O”或“C”。

在进行ASCII码转换后,若奇偶位为偶(PF=1),则显示“P”,为负(SF=1)显示“S”为了解每个数运算后对状态标志的影响,在每个数运算完后均显示“;

”。

2000MOVSI,3000

2003MOVCX,0005

2006MOVDX,0000

2009MOVAH,00

200BSAHF;

清标志位

200CMOVAX,W[SI];

200EMOVBX,0101

2011DIVBX;

除101

2013AAD;

ASCII码调整

2015JO2029

2017JB202D

2019JP2031

201BJS2035

201DMOVAL,3B;

显示“;

201FINCSI

2020INCSI

2021MOVAH,01

2023INT10

2025LOOP2006

2027JMP2027

2029MOVAL,4F;

202BJMP201F

202DMOVAL,43;

202FJMP201F

2031MOVAL,50;

显示“P”

2033JMP201F

2035MOVAL,53;

显示“S”

2037JMP201F

2039INT

在3000~3009H中填入5个16位二进制数。

用DIV除法指令,判定它对CF,OF,PF,SF标志的影响,记录显示结果。

用IDIV除法指令代替DIV,执行程序,记录结果。

(三)开平方运算

用减奇数法开平方

2000MOVAX,W[3500];

取被开方数

2003MOVCL,00;

清平方根

2005MOVDX,0001;

奇数初值

2008SUBAX,DX;

减奇数

200AJB2013;

不够减则结束

200CINCCL;

够减奇数个数计数

200EADDDX,02;

形成下一个奇数

2011JMP2008

2013MOVB[350A],CL;

存平方根

2017INT

在3500存入10,00(即0010),结果在350A,应为0400CC,反复试几组数,考查程序的正确性。

实验四分支程序设计实验

数据块搬移程序。

将3100H为首址的16个字节搬到3200为首址的区域。

2000MOVCX,0010;

取搬家字节数

2003MOVSI,3100;

取源块首址

2006MOVDI,3200;

取目的块首址

2009CMPSI,DI;

从首址开始?

200BJA201E;

是,转移

200DADDSI,CX;

否,以末地址

200FADDDI,CX;

开始搬家

2011DECSI

2012DECDI

2013MOVAL,B[SI]

2015MOVB[DI],AL

2017DECSI

2018DECDI

2019DECCX

201AJNE2013

201CJMP2027

201EMOVAL,B[SI];

从首地址开始搬家

2020MOVB[DI],AL

2022INCSI

2023INCDI

2024DECCX

2025JNE201E

2027INT

用E命令在以SI为起址的单元中填入16个数字。

运行后用D命令查看DI为起址的单元中的数,是否同SI单元中。

改变SI和DI(源首址>

目的首址),观察结果。

实验五循环程序设计

1.计算1+2×

3+3×

4N(N+1),直到N(N+1)大于200为止。

2000MOVDX,0001

2003MOVBL,02

2005MOVAL,BL

2007INCBL

2009MULBL

200BADDDX,AX

200DCMPAX,00C8;

(AX)>

200吗?

2010JNA2005

2012INT

2.求某数据区域的负数的个数

2000MOVDI,3000;

2003MOVCL,B[DI];

送数据个数

2005XORCH,CH;

CH清0

2007MOVBL,CH;

BL清0

2009INCDI;

指针指向第一个数据

200ATESTB[DI],80;

首位是否为1

200DJNE2011

200FINCBL;

负数个数累加

2011INCDI

2012LOOP200A

2014MOVB[DI],BL;

2016INT

在3000输入数据的个数,在3001开始输入数据(12,88,82,90,22,33),在3007看结果。

实验六排序程序设计

1.在数据区中存放着一组数,数据的个数就是数据缓冲区的长度,要求用气泡法对该数据区中数据按递增关系排序

2000MOVCX,000A

2003MOVSI,300A

初始化

2008CMPBL,FF

200BJNZ202A;

BL不为FF则转

200DMOVBL,00

200FDECCX;

外循环修正CX

2010JZ202A

2012PUSHSI

2013PUSHCX

2014DECSI

2015MOVAL,B[SI]

2018CMPAL,B[SI]

201AJA2023

201CXCHGAL,B[SI]

201EMOVB[SI+01],AL

2021MOVBL,FF

2023INCSI

2024LOOP2014

2026POPCX

2027POPSI

2028JMP2008

202AINT

在3000~3009H数据区中任意放入10个无符号数。

调通程序,并检查最后的运行结果。

反复修改数据区中的数,运行程序并观察结果,以验证程序的正确性。

2.学生成绩名次表

主程序

2000MOVAX,0000

2003MOVDS,AX

2005MOVES,AX

2007MOVSI,3000

200AMOVCX,001E

200DMOVDI,3100

2010CALL2020

2013MOVAL,1E

2015SUBAL,CL

2017INCAL

2019MOVBX,DX

201BMOVB[BX+DI],AL

201DLOOP2010

201FINT

子程序

2020PUSHCX

2021MOVCX,001E

2024MOVAL,00

2026MOVBX,3000

2029MOVSI,BX

202BCMPAL,B[SI]

202DJAE2035

202FMOVAL,B[SI]

2031MOVDX,SI

2033SUBDX,BX

2035INCSI

2036LOOP202B

2038ADDBX,DX

203AMOVB[BX],00

203DPOPCX

203ERET

将30个成绩存入首址为3000H的单元中。

调试并运行程序。

检查3100H开始的区域中的名次表的正确性。

实验七子程序设计

1.求无符号字节序列中的最大值最小值

2003MOVCX,0008

2006CALL2010

2009INT

2010JCXZ202F

2014PUSHBX

2015MOVBH,B[SI]

2017MOVBL,BH

2019LODSB

201ACMPAL,BH

201CJBE2022

201EMOVBH,AL

2020JMP2028

2022CMPAL,BL

2024JAE2028

2026MOVBL,AL

2028LOOP2019

202AMOVAX,BX

202CPOPBX

202DPOPCX

202EPOPSI

202FRET

在3000H处输入8个字节数据:

D9、07、8B、C5、EB、04、9D、F9。

运行后用R命令检查AX,AH中为最大值,AL中为最小值。

输入三组数据,反复验证程序的正确性。

2.求N!

2000MOVAX,3010

2003PUSHAX

2006MOVAX,W[3000]

2007PUSHAX

2008MOVDI,0000

200BCALL200F

200EINT

200FPUSHBP

2010MOVBP,SP

2012PUSHBX

2013PUSHAX

2014MOVBX,W[BP+DI+06]

2017MOVAX,W[BP+DI+04]

201ACMPAX,0000

201DJZ2033

201FPUSHBX

2020DECAX

2021PUSHAX

2022CALL200F

2025MOVBX,W[BP+DI+06]

2028MOVAX,W[BX]

202APUSHBX

202BMOVBX,W[BP+DI+04]

202EMULBX

2030POPBX

2031JMP2036

2033MOVAX,0001

2036MOVW[BX],AX

2038POPAX

2039POPBX

203APOPBP

203BRET0004

在3000、3001H放N,N!

的结果在3010H起的单元中,N取值<

10H,且3000H中放低位。

实验八显示程序

显示器I/O功能调用(INT10)使用说明

入口:

AH=00H,AL=01H功能:

清屏

AH=01H,AL=数据功能:

写AL中的数据到屏幕上

AH=02H,AL=功能设置命令功能:

设置显示屏

AH=03H,BL=列,BH=行功能:

光标控制

AH=04H,AL方式设置指令功能:

AH=05H,功能:

读当前DDRAM数据字符到AL中

AH=06H,DS:

BX=字符串首址,且字符串尾为00H功能:

显示字符串

2000MOVCX,

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

当前位置:首页 > 初中教育 > 政史地

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

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