微机原理及应用实验报告
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2•深入了解数据在存储器中的存取方法及堆栈中数据的压入与弹出。
3•掌握各种寻址方法以及简单指令的执行过程。
二、实验要求
1实验前要作好充分准备,包括汇编程序清单、调试步骤、调试方法以及对程序结果的分 析等。
2•本实验要求在PC机上进行。
3•本实验只要求在DEBUC调试状态下进行,包括汇编程序,调试程序,执行程序。
4•熟悉建立源文件,进行汇编和连接的全过程,并对程序进行调试。
二、实验要求
1•实验前准备
1分析题目,将程序中的原始数据、中间结果和最终结果的存取方式确定好。
2写出算法或画出流程图。
3写出源程序。
4对程序中的结果进行分析,并准备好上机调试的过程。
2•本实验要求在PC机上进行。
3•汇编过程中出现问题,可用DEBU(进行调试。
xorax,ax pushax movax,data movds,ax leasi,data1 leadi,data2 leabx,data3 moval,[si+3] movah,[di+3] an dal,0fh an dah,0fh addal,ah oral,30h mov[bx+3],al moval,[si+2] movah,[di+2] an dal,0fh an dah,0fh adcal,ah oral,30h mov[bx+2],al moval,[si+1] movah,[di+1] an dal,0fh an dah,0fh adcal,ah oral,30h mov[bx+1],al moval,[si] movah,[di] an dal,0fh an dah,0fh adcal,ah
;exercize21
datasegme nt
org0200h bufferdw0,1,-5,10,256,-128,-100,45,6,3,
dw-15,-67,39,4,20,-1668,-32766,32765,-525,
dw300
coun tequ($-buffer)/2 maxdw?
datae Biblioteka dsoral,30h mov[bx],al movcx,4 movah,2h a1:movdl,[bx]
②sstacksegme ntstack'stack'
dw32dup⑺
sstacke nds
datasegme nt
buffdb12,-23,5,-4,0,3,100,-51,3,-45,9,2
datae nds coun tequ$-buff codesegme nt
MOVAXBX寄存器寻址AX:0300
MOVAX0304H立即寻址AX:0304
MOVA,[0304H]存储器直接寻址AX:ds:0304内存单元的内容0EH MOVAX[BX]寄存器间接寻址AX:ds:0300内存单元的内容0AH MOVAX0001[BX]基址相对寻址AX:ds:0301内存单元的内容0BH
喩械
实验报告
微程原理及应用
实验1DEBU操作实验实验2汇编程序设计实验实验名 称
实验38253定时/计数器实验实验48255并行接口实验
年月日至年月日实验日期
学生专业
学生学号
学生姓名
教师姓名
成绩
南京理工大学机械工程学院
实验一DEBUG命令及其操作
一、实验目的
1熟练掌握debug的常用命令,学会用debug来调试程序。
数一1当x>0
变程序):当x=0
m-1当x<0
r
x
执
行
、八
刖
H
执
7ffdH
①sstacksegme nt dw32dup⑺sstacke nds
datasegme nt dataldb‘1234' data2db‘5678'
data3db4dup(?)
datae nds
codesegme nt
assumecs:code,ss:sstack,ds:data sta:pushds
三、实验内容
1•实验内容1
1编辑源程序(参考程序见下),建立ASM文件;
2用MASM!序汇编,生成.OBJ文件;查看丄ST文件的内容
3用LINK程序链接,生成.EXE文件;
4使用DEBUGS令将.EXE文件调进内存,执行后查看程序运行结果;
5使用DEBUGS令,检查各段在内存当中分配情况。 参考程序:
答:
把待汇编的程序放在存放汇编、链接程序的文件夹里打开汇编程序输入待汇编的程序名 字,以默认配置生成bj文件,再打开链接程序输入待链接的程序名字以默认配置生成
exe文件
后①234+5678
后 请用ASCII码的形式将加数与被加数存放在数据区DATA俐DATA2中,并将相加的结 显示输出。
②假设有一组数据:5,-4,0,3,100,-51,??,请编一程序,判断每个数是否大于 于0,还是小于0,并输出判断结果。即
实验报告要求:
1写出源操作数的寻址方式;
2•单步执行,并记录相关寄存器及存储单元的值A100;给各内存单元赋值
Movdi,0300
Movdx,0a
Movcx,5 1oop1:mov[di],dx
In cdi
In cdx
looploopl
程序清单如下:寻址方式和AX的内容
MOVB,0300立即寻址
MOVSJ0002立即寻址
In t20
实验内容3
设DS^前段地址,BX=0300H SI=0002H,请用DEBUG勺命令将存储器偏移地址
300H〜304H连续单元装入0AH 0BH 0CH 0DH 0EH在DEBU(状态下送入下面的程
序,并用单步执行的方法,分析每条指令源地址的形成过程?当数据传送完毕时,AX中的
内容是什么?
MOVAX [BX][SI]基址变址寻址AX:ds:0302内存单元的内容0CH MOVAX0001[BX][SI]基址变址寻址AX:ds:0303内存单元的内容0DH实验内容4
设AX=0002H编写程序将AX的内容乘10,要求用移位的方法完成。
写出实现上实验报告要求:
1•述功能的程序段;
2•单步执行程序,记录每条指令的机器码及相关寄存器的内容 注意:左移指令用SHL而不能使用SAL
三、实验内容
实验内容1:学习用DEBU调试工具进行源程序的输入、汇编、调试和执行。 实验报告要求:
1写出运行结果;
2•小结debug常用命令及使用体会 答:1.原文已给出(略)
2.a汇编
d显示内存单元内容
e修改单元内存内容
g执行命令
t单步(或多步)调试
n指定文件路径文件名(含扩展名)
u反汇编
r查看寄存器值及修改
Addax,dx机器码:01d0ax:0014dx:0004cl:02
Int20机器码:cd20ax:0014dx:0004cl:02
实验二简单程序的编写及汇编连接
一、实验目的
1•熟练掌握编写汇编语言源程序的基本方法和基本框架。
2.学会编写顺序结构、分支结构和循环结构的汇编程序,掌握宏定义与宏调用的方法。3•掌握程序中数据的产生与数输出的方法。
l加载程序
w写盘命令 体会:提升学习热情和动手能力有助于理解代码执行过程
实验内容2
设AX=3000H BX=5000H请编一程序段将AX的内容和BX的内容进行交换。请用 堆栈作为两寄存器交换内容的中间存储单元,用DEBU调试程序进行汇编与调试。
实验报告要求:
1•写出完成上述功能的程序段;
2.单步执行,并记录寄存器AX,BX及堆栈指针SP的值
assumess:sstack,ds:data,cs:code
startprogfar
pushds
xorax,ax
pushax
movax,data
movds,ax
leabx,buff
max:addsi,2
cmp[si],ax jlenext movax,[si] n ext:loopchkmax movmax,ax ret stae ndp codeends en dsta
实验报告5:
1小结汇编语言源程序的编译及连过;
2•记录数据段在程序执行前后的内容
3•写出程序调试中出现的问题及解决法
A100
b80200ax:0002dx:0000cl:00
ba0000ax:0002dx:0000cl:00
d1e0ax:0004dx:0000cl:00
Movdx,ax机器码:01d0ax:0004dx:0004cl:00
Movcl,2机器码:b102ax:0004dx:0004cl:02
Shlax,cl机器码:d3e0ax:0010dx:0004cl:02
stacksegme ntstack'stack'
db100dup('s')
stacke nds codesegme ntpara'code'
assumecs:code,ds:data,ss:stack staprocfar pushds xorax,ax pushax movax,data movds,ax leasi,buffer movcx,co unt deccx movax,[si]chk
答:
A100
Movax,3000; ax:3000bx:0000sp:ffee
Movbx,5000; ax:3000bx:5000sp:ffee
Pushax;ax:3000bx:5000sp:ffec
Movax,bx;ax:5000bx:5000sp:ffec
Popbx; ax:5000bx:3000sp:ffee
3•掌握各种寻址方法以及简单指令的执行过程。
二、实验要求
1实验前要作好充分准备,包括汇编程序清单、调试步骤、调试方法以及对程序结果的分 析等。
2•本实验要求在PC机上进行。
3•本实验只要求在DEBUC调试状态下进行,包括汇编程序,调试程序,执行程序。
4•熟悉建立源文件,进行汇编和连接的全过程,并对程序进行调试。
二、实验要求
1•实验前准备
1分析题目,将程序中的原始数据、中间结果和最终结果的存取方式确定好。
2写出算法或画出流程图。
3写出源程序。
4对程序中的结果进行分析,并准备好上机调试的过程。
2•本实验要求在PC机上进行。
3•汇编过程中出现问题,可用DEBU(进行调试。
xorax,ax pushax movax,data movds,ax leasi,data1 leadi,data2 leabx,data3 moval,[si+3] movah,[di+3] an dal,0fh an dah,0fh addal,ah oral,30h mov[bx+3],al moval,[si+2] movah,[di+2] an dal,0fh an dah,0fh adcal,ah oral,30h mov[bx+2],al moval,[si+1] movah,[di+1] an dal,0fh an dah,0fh adcal,ah oral,30h mov[bx+1],al moval,[si] movah,[di] an dal,0fh an dah,0fh adcal,ah
;exercize21
datasegme nt
org0200h bufferdw0,1,-5,10,256,-128,-100,45,6,3,
dw-15,-67,39,4,20,-1668,-32766,32765,-525,
dw300
coun tequ($-buffer)/2 maxdw?
datae Biblioteka dsoral,30h mov[bx],al movcx,4 movah,2h a1:movdl,[bx]
②sstacksegme ntstack'stack'
dw32dup⑺
sstacke nds
datasegme nt
buffdb12,-23,5,-4,0,3,100,-51,3,-45,9,2
datae nds coun tequ$-buff codesegme nt
MOVAXBX寄存器寻址AX:0300
MOVAX0304H立即寻址AX:0304
MOVA,[0304H]存储器直接寻址AX:ds:0304内存单元的内容0EH MOVAX[BX]寄存器间接寻址AX:ds:0300内存单元的内容0AH MOVAX0001[BX]基址相对寻址AX:ds:0301内存单元的内容0BH
喩械
实验报告
微程原理及应用
实验1DEBU操作实验实验2汇编程序设计实验实验名 称
实验38253定时/计数器实验实验48255并行接口实验
年月日至年月日实验日期
学生专业
学生学号
学生姓名
教师姓名
成绩
南京理工大学机械工程学院
实验一DEBUG命令及其操作
一、实验目的
1熟练掌握debug的常用命令,学会用debug来调试程序。
数一1当x>0
变程序):当x=0
m-1当x<0
r
x
执
行
、八
刖
H
执
7ffdH
①sstacksegme nt dw32dup⑺sstacke nds
datasegme nt dataldb‘1234' data2db‘5678'
data3db4dup(?)
datae nds
codesegme nt
assumecs:code,ss:sstack,ds:data sta:pushds
三、实验内容
1•实验内容1
1编辑源程序(参考程序见下),建立ASM文件;
2用MASM!序汇编,生成.OBJ文件;查看丄ST文件的内容
3用LINK程序链接,生成.EXE文件;
4使用DEBUGS令将.EXE文件调进内存,执行后查看程序运行结果;
5使用DEBUGS令,检查各段在内存当中分配情况。 参考程序:
答:
把待汇编的程序放在存放汇编、链接程序的文件夹里打开汇编程序输入待汇编的程序名 字,以默认配置生成bj文件,再打开链接程序输入待链接的程序名字以默认配置生成
exe文件
后①234+5678
后 请用ASCII码的形式将加数与被加数存放在数据区DATA俐DATA2中,并将相加的结 显示输出。
②假设有一组数据:5,-4,0,3,100,-51,??,请编一程序,判断每个数是否大于 于0,还是小于0,并输出判断结果。即
实验报告要求:
1写出源操作数的寻址方式;
2•单步执行,并记录相关寄存器及存储单元的值A100;给各内存单元赋值
Movdi,0300
Movdx,0a
Movcx,5 1oop1:mov[di],dx
In cdi
In cdx
looploopl
程序清单如下:寻址方式和AX的内容
MOVB,0300立即寻址
MOVSJ0002立即寻址
In t20
实验内容3
设DS^前段地址,BX=0300H SI=0002H,请用DEBUG勺命令将存储器偏移地址
300H〜304H连续单元装入0AH 0BH 0CH 0DH 0EH在DEBU(状态下送入下面的程
序,并用单步执行的方法,分析每条指令源地址的形成过程?当数据传送完毕时,AX中的
内容是什么?
MOVAX [BX][SI]基址变址寻址AX:ds:0302内存单元的内容0CH MOVAX0001[BX][SI]基址变址寻址AX:ds:0303内存单元的内容0DH实验内容4
设AX=0002H编写程序将AX的内容乘10,要求用移位的方法完成。
写出实现上实验报告要求:
1•述功能的程序段;
2•单步执行程序,记录每条指令的机器码及相关寄存器的内容 注意:左移指令用SHL而不能使用SAL
三、实验内容
实验内容1:学习用DEBU调试工具进行源程序的输入、汇编、调试和执行。 实验报告要求:
1写出运行结果;
2•小结debug常用命令及使用体会 答:1.原文已给出(略)
2.a汇编
d显示内存单元内容
e修改单元内存内容
g执行命令
t单步(或多步)调试
n指定文件路径文件名(含扩展名)
u反汇编
r查看寄存器值及修改
Addax,dx机器码:01d0ax:0014dx:0004cl:02
Int20机器码:cd20ax:0014dx:0004cl:02
实验二简单程序的编写及汇编连接
一、实验目的
1•熟练掌握编写汇编语言源程序的基本方法和基本框架。
2.学会编写顺序结构、分支结构和循环结构的汇编程序,掌握宏定义与宏调用的方法。3•掌握程序中数据的产生与数输出的方法。
l加载程序
w写盘命令 体会:提升学习热情和动手能力有助于理解代码执行过程
实验内容2
设AX=3000H BX=5000H请编一程序段将AX的内容和BX的内容进行交换。请用 堆栈作为两寄存器交换内容的中间存储单元,用DEBU调试程序进行汇编与调试。
实验报告要求:
1•写出完成上述功能的程序段;
2.单步执行,并记录寄存器AX,BX及堆栈指针SP的值
assumess:sstack,ds:data,cs:code
startprogfar
pushds
xorax,ax
pushax
movax,data
movds,ax
leabx,buff
max:addsi,2
cmp[si],ax jlenext movax,[si] n ext:loopchkmax movmax,ax ret stae ndp codeends en dsta
实验报告5:
1小结汇编语言源程序的编译及连过;
2•记录数据段在程序执行前后的内容
3•写出程序调试中出现的问题及解决法
A100
b80200ax:0002dx:0000cl:00
ba0000ax:0002dx:0000cl:00
d1e0ax:0004dx:0000cl:00
Movdx,ax机器码:01d0ax:0004dx:0004cl:00
Movcl,2机器码:b102ax:0004dx:0004cl:02
Shlax,cl机器码:d3e0ax:0010dx:0004cl:02
stacksegme ntstack'stack'
db100dup('s')
stacke nds codesegme ntpara'code'
assumecs:code,ds:data,ss:stack staprocfar pushds xorax,ax pushax movax,data movds,ax leasi,buffer movcx,co unt deccx movax,[si]chk
答:
A100
Movax,3000; ax:3000bx:0000sp:ffee
Movbx,5000; ax:3000bx:5000sp:ffee
Pushax;ax:3000bx:5000sp:ffec
Movax,bx;ax:5000bx:5000sp:ffec
Popbx; ax:5000bx:3000sp:ffee