汇编语言源程序运行步骤和DEBUG的使用.docx

上传人:b****7 文档编号:8793927 上传时间:2023-02-01 格式:DOCX 页数:16 大小:55.83KB
下载 相关 举报
汇编语言源程序运行步骤和DEBUG的使用.docx_第1页
第1页 / 共16页
汇编语言源程序运行步骤和DEBUG的使用.docx_第2页
第2页 / 共16页
汇编语言源程序运行步骤和DEBUG的使用.docx_第3页
第3页 / 共16页
汇编语言源程序运行步骤和DEBUG的使用.docx_第4页
第4页 / 共16页
汇编语言源程序运行步骤和DEBUG的使用.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

汇编语言源程序运行步骤和DEBUG的使用.docx

《汇编语言源程序运行步骤和DEBUG的使用.docx》由会员分享,可在线阅读,更多相关《汇编语言源程序运行步骤和DEBUG的使用.docx(16页珍藏版)》请在冰豆网上搜索。

汇编语言源程序运行步骤和DEBUG的使用.docx

汇编语言源程序运行步骤和DEBUG的使用

实验一汇编语言源程序运行步骤和DEBUG的使用

一、实验目的

1.熟悉汇编语言源程序书写格式。

2.熟悉汇编语言源程序编辑、汇编、连接、执行步骤。

3.练习DEBUG常用命令的使用。

4.熟悉8086的寄存器。

5.了解程序的执行过程。

二、实验预习要求

1、认真阅读预备知识中汇编语言的上机步骤的说明,熟悉汇编程序的建立、汇编、连接、执行、调试的全过程。

2.预习使用DEBUG检查/修改寄存器内容、查询存储器内容的命令。

3.预习使用DEBUG单步、断点及连续执行程序的命令。

三、实验内容

1.编辑以下程序,汇编连接后运行,将输出'HOWAREYOU?

’。

本习题主要目的:

熟悉汇编语言源程序的书写格式;熟悉汇编语言源程序的编辑、汇编、连接、运行。

DATASEGMENT

BUFDB'HOWAREYOU?

$'

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVDX,OFFSETBUF

MOVAH,09H

INT21H

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

2.DEBUG调试以下程序,查看DATA段中定义的数据在内存中的存放方式,并单步执行查看每一语句执行后相关寄存器的内容,并解释为何取该值:

DATASEGMENT;

(1)

ADB34H,12H;

(2)

BDW1234H;(3)

CDD0;(4)

DDB-1,15/3;(5)

EDB'012';(6)

FDW'AB','C';(7)

GDW?

;(8)

HDB5DUP(0);(9)

IDW$-OFFSETH;(10)

DATAENDS;(11)

CODESEGMENT;(12)

ASSUMECS:

CODE,DS:

DATA;(13)

START:

MOVAX,CODE;(14)

MOVDS,AX;(15)

MOVBX,SEGA;(16)

MOVCX,OFFSETB;(17)

MOVDX,TYPEC;(18)

MOVAH,4CH;(19)

INT21H;(20)

CODEENDS;(21)

ENDSTART;(22)

3.下面是第1题采用将主程序定义为远程的程序返回DOS的结束方式,将其编辑、连接、运行,熟悉汇编源程序不同的结束方式。

DATASEGMENT

BUFDB'HOWAREYOU?

$'

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

MAINPROCFAR

START:

PUSHDS

MOVAX,0

PUSHAX

MOVAX,DATA

MOVDS,AX

MOVDX,OFFSETBUF

MOVSI,0

MOVAH,09H

INT21H

RET

MAINENDP

CODEENDS

ENDSTART

四、实验报告要求

1.写明本次实验内容和实验步骤。

2.整理出运行正确的各题源程序段和运行结果。

3.小结Debug的使用方法。

实验二DEBUG的使用

一、实验预习要求

1.复习8086指令系统中的数据传送类指令和8086的寻址方式。

2.预习Debug的使用方法:

a)如何启动Debug;

b)如何在各窗口之间切换;

c)如何查看或修改寄存器、状态标志和存储单元的内容;

d)如何输入程序段;

e)如何单步运行程序段和用设置断点的方法运行程序段。

3.按照题目要求预先编写好实验中的程序段。

二、实验任务

1.通过下述程序段的输入和执行来熟悉Debug的使用,并通过显示器屏幕观察程序的执行情况。

练习程序段如下:

MOVBL,08H

MOVCL,BL

MOVAX,03FFH

MOVBX,AX

MOVDS:

[0020H],BX

2.指出下列指令的错误并加以改正,上机验证之。

(1)MOV[BX],[SI]

(2)MOVAH,BX

(3)MOVAX,[SI][DI]

(4)MOVBYTEPTR[BX],2000H

(5)MOVCS,AX

(6)MOVDS,2000H

3.设置各寄存器及存储单元的内容如下:

(BX)=0010H,(SI)=0001H

(10010H)=12H,(10011H)=34H,(10012H)=56H,(10013H)=78H

(10120H)=0ABH,(10121H)=0CDH,(10122H)=0EFH

说明下列各条指令执行完后AX寄存器中的内容,并上机验证。

(1)MOVAX,1200H

(2)MOVAX,BX

(3)MOVAX,[0120H]

(4)MOVAX,[BX]

(5)MOVAX,0110H[BX]

(6)MOVAX,[BX][SI]

(7)MOVAX,0110H[BX][SI]

4.设AX寄存器中的内容为1111H,BX寄存器中的内容为2222H,DS:

0010H单元中的内容为3333H。

将AX寄存器中的内容与BX寄存器中的内容交换,然后再将BX寄存器中的内容与DS:

0010H单元中的内容进行交换。

试编写程序段,并上机验证结果。

三、实验报告要求

1、写明本次实验内容和实验步骤。

2、整理出运行正确的各题源程序段和运行结果。

3、写出第2题中改正后的正确指令。

4、小结Debug的使用方法。

实验三数据传送

一、实验目的

1.熟悉8086指令系统的数据传送指令及8086的寻址方式。

2.学会利用Debug调试工具来调试汇编语言程序。

二、实验要求

1.通过编写程序,学会各种寻址方式的使用。

2.继续熟悉使用相关的DEBUG命令单步、断点及连续执行程序,来调试程序。

3.预先编写好程序。

三、实验内容

1.《汇编语言与PC技术》书p46页例4.1中五种方法编写的程序加上输出结果的指令序列,即将SS1中数据传送到SS2后,再将SS2中的字符显示输出、具体要求是:

1)为程序LI4_1_1加上按正序将SS2中的字符依次显示出来的指令序列。

2)为程序LI4_1_2加上按逆序将SS2中的字符依次显示出来的指令序列。

3)为程序LI4_1_4加上按正序将SS2中的字符依次显示出来的指令序列。

4)为程序LI4_1_5加上按正序将SS2中的字符依次显示出来的指令序列。

提示:

此题的困难在于SS2是用DW伪指令定义的,而显示字符是一个字节一个字节的显示。

解决此问题的方法有四个:

①直接用SS2[SI]访问,一次取一个字(比如:

MOVDX,SS2[SI]),然后先显示低位字节(DL),再显示(DH)。

即循环执行一次输出两个字符。

②按字节访问字变量,比如用SS2[SI]地址表达式表示SS2中的字节地址,在指令中用PTR操作符将字类型变量SS2按字节访问.例如:

MOVDL,BYTEPTRSS2[SI]

③在数据段中定义SS2的伪指令之前,用LABEL或EQU伪指令为SS2所对应的同一物理位置,另外定义类型为BYTE的标号(例如SS3)。

当你希望按字节访问这片存储器时,就用别这个名字(比如:

MOVDL,SS3[SI])。

④用变量名不出现在地址表达式里的间接访问。

比如[SI]、[BX]、[BX][SI]等地址表达式表示SS2中的字节位移量(例如:

MOVDL,[SI])。

2.把课本例4-1程序LI4_l_l改为SS2在辅助数据段,SS1仍在数据段,将SS1中的字符依次传送至SS2后,按正序显示输出SS2中的字符。

四、实验报告要求

1.提交本次上机调试好的程序。

2.给出运行结果。

3.写出编程、调试体会。

实验四利用堆栈和换码实现传送

一、实验目的

1.学会使用堆栈指令PUSH和POP。

2.学会使用换码指令XLAT。

二、实验内容

课本P60页

3.按例4-1的程序LI4_1_5的方法定义SS1,将SS1按字依次推人堆栈,然后按SS1中字符的反序从堆栈中弹出显示输出。

提示:

弹出字送入DX,首先显示DL的内容,然后再显示DH的内容。

5.改写例4_6程序。

1)将例4_6改为不存储0,1,2,…,0FH,而用指令计算出这些十六进制数字(比如在DH里计算).然后将其转换成对应的ASCII码,并显示输出。

2)将例4_6改为不存储0,1,2,…,0FH,而直接用CX的值。

提示:

CX的值依次为16,15,…,2,1,如果换码表定义为:

TAB_DADB‘FEDCBA9876543210’,则CX-l即为‘0’,‘1’,‘2’,…,‘E’,‘F’在TAB_DA表中相对于表头的位移量。

6.编写一个加密与解密0~9位字序列的程序,设0,1,2,3,4,5,6,7,8,9对应的密码表为9,0,8,2,7,4,6.3,1,5,键盘输入任意一个4位数要求程序能够马上输出这4位数对应的密码。

例如:

键盘输入4925,显示输出7584。

三、实验报告要求

1.提交本次上机调试好的程序。

2.给出运行结果。

3.写出编程、调试体会

实验五算术运算程序

一、实验目的

1.熟悉算术逻辑运算指令和移位指令的功能。

2.了解标志寄存器各标志位的意义和指令执行对它的影响。

二、实验预习要求

1.复习8086指令系统中的算术逻辑类指令和移位指令。

2.按照题目要求在实验前编写好实验中的程序段。

三、实验任务

1.用DEBUG调试以下程序段,将指令对标志位的影响结果填写到以下表格:

标志位

CF

ZF

SF

OF

PF

AF

程序段1:

MOVAX,1018H

MOVSI,230AH

ADDAX,SI

ADDAL,30H

MOVDX,3FFH

ADDAX,BX

MOV[20H],1000H

ADD[20H],AX

PUSHAX

POPBX

0

0

0

0

0

0

程序段2:

MOVAX,0A0AH

ADDAX,0FFFFHMOVCX,0FF00H

ADCAX,CX

SUBAX,AX

INCAX

ORCX,0FFH

ANDCX,0F0FH

MOV[10H],CX

0

0

0

0

0

0

程序段3:

MOVBL,25H

MOVBYTEPTR[10H],4

MOVAL,[10H]

MULBL

0

0

0

0

0

0

2、(课本习题P79页3,7题)

(1)实现多字节二进制减法630B840A90H-436732AF8AH,用DEBUG查看程序结果。

(2)用非压缩型BCD码的减法编写计算:

3621-4203的程序,并显示输出结果。

要求:

数据按低位存放在低地址字节.

数据按高位存放在高地址字节。

实验六、代码转换

一、实验目的:

1.理解各种进制在计算机内的表方法、BCD码和ASCII码的表示方法。

2.熟悉各种常用进制和代码转换的方法。

3.掌握代码转换程序的设计方法,比如:

如何将BCD值转换成ASCII值。

二、实验预习要求:

1、复习各进制数、BCD码和ASCII码的定义形式,理解两者的区别

2、根据本实验的编程提示和程序框架预先编写汇编语言源程序。

三、实验内容

1.编写程序:

将键盘输入的4位十进制数(ASCII码)保存为压缩BCD数。

2.编写程序:

从键盘输入一个十进制数,以回车(0DH)结束,将其转换成它所代表的二进制数据,然后以十六进制形式输出。

3.编写程序;将16位二进制数转换为压缩BCD数。

(高数字位存放在低地址)

四、实验报告要求

1.整理出完整的实验程序,对结果进行解释。

实验七十进制数的输入和输出

一、实验目的

1.理解十进制数在计算机中的存放方式。

2.掌握十进制数的输入、输出方法,以及十六进制数的输出方法

二、实验预习要求

1.复习系统功能调用的1、2、9号功能。

2.按照题目要求预先编写好实验中的程序段。

三、实验内容

课本习题P79页15题

15.键盘输入一个一位加法表达式。

1)按十进制输出其正确的结果。

例如:

7+8=15,2+3=05。

2)按十六进制输出其正确结果。

例如:

7+8=0FH,2+3=05H。

四、实验报告要求

1.整理出运行完整的实验程序和运行结果。

2.总结一下,如何输出十六进制数?

与字符输出有什么关系?

3.总结一下,如何输出十进制数?

总结15题加法可能的实现方法。

实验八分支及循环程序设计

一、实验目的

1、学习提示信息的显示及键盘输入字符的方法。

2、掌握分支程序和循环程序的设计方法。

二、实验预习要求

1.复习比较指令、转移指令、循环指令的用法。

2.根据编程提示,编出汇编语言源程序。

三、实验内容(课本p98页4,5)

1.给出一组数:

349H,256H,45H,67H,98H,412H,74H,90H,48H,找出其中的最大数、最小数,将结果以十六进制输出。

2.给出一组数:

0FFFFH,3567H,2345H,0002H,0034H,0F045H,将以上数据视为带符号数,找出其中的最大数和最小数,将结果用十六进制输出。

四、实验报告要求

1.整理出完整的实验程序。

2.总结一下编制分支程序和循环程序的要点。

实验九8255A并行接口应用

一、实验目的:

1.掌握8255A的工作原理以及编程方法。

2.理解8255A在实际中的应用。

二、实验预习要求

1.预习8255A的工作原理;

2.预习8255A的编程方法;

三、实验内容:

某8086微机系统中有一片8255A,其端口A的PA7~PA0接8个开关K7~K0,C口的PC7~PC0接8个发光二极管LED7~LED0。

A口、C口均工作于方式0,要求实现编程,将开关状态K7~K0送入LED7~LED0显示。

已知端口地址:

PA口:

288H,PC口:

28AH,控制口:

28BH

四、实验报告要求

1.编写出完整的实验程序。

2.给出实验结果。

实验九8255A并行接口应用

一、实验目的:

1.掌握8255A的工作原理以及编程方法。

2.理解8255A在实际中的应用。

二、实验预习要求

1.预习8255A的工作原理;

2.预习8255A的编程方法;

三、实验内容:

某8086微机系统中有一片8255A,其端口A的PA7~PA0接8个开关K7~K0,C口的PC7~PC0接8个发光二极管LED7~LED0。

A口、C口均工作于方式0,要求实现编程,将开关状态K7~K0送入LED7~LED0显示。

已知端口地址:

PA口:

288H,PC口:

28AH,控制口:

28BH

四、实验报告要求

1.编写出完整的实验程序。

2.给出实验结果。

实验十一交通灯模拟实验------8255并行接口实验

一、实验要求:

编写程序,以8255的PA口作为输出口,控制4个双色LED灯(可发红、绿、黄光),模拟十字路口交通灯管理。

二、实验目的:

1、掌握8255的工作原理。

2、学习模拟交通灯控制方法;

三、8255的工作原理:

8255有三个8位的并行口,端口既可以编程为普通I/O口,也可以编程为选通I/O口和双向传输口。

8255为总线兼容型,可以与CPU的总线直接接口。

其中,口地址取决于片选CS和A1、A0。

选择如下:

A1

A0

CS

选通的端口

0

0

0

A口

0

1

0

B口

1

0

0

C口

1

1

0

命令口

本实验中8255编程为PB口、PC口、PA口均输出,根据8255状态控制字选择方法。

8255控制字应为90H。

四、接线方案:

五、实验说明:

因为本实验是模拟交通灯控制实验,所以要先了解实际交通灯的变化规律。

假设一个十字路口为东西南北走向。

初始状态0南北绿灯通车,东西红灯。

过一段时间转状态1,南北绿灯闪几次转亮黄灯,东西仍然红灯,延时儿秒。

再转状态2,东西绿灯通车,南北红灯。

过一段时间转状态3,东西绿灯闪几次转亮黄灯,延时几秒,南北仍然红灯。

最后循环至状态0。

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

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

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

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