微机接口技术课程设计汇编语言开发环境认识.docx
《微机接口技术课程设计汇编语言开发环境认识.docx》由会员分享,可在线阅读,更多相关《微机接口技术课程设计汇编语言开发环境认识.docx(23页珍藏版)》请在冰豆网上搜索。
微机接口技术课程设计汇编语言开发环境认识
微机原理与接口技术A
实验报告
姓名:
学号63120
班级:
电子专业12级03班
指导教师:
张
微机原理与接口技术实验报告
(1)
实验项目名称:
汇编语言开发环境认识
实验日期:
2014/4/4实验成绩:
实验评定标准:
1)实验结果及分析是否合理
A()B()C()
2)实验程序流程图是否正确
A()B()C()
3)实验报告是否按照规定格式
A()B()C()
一、实验目的
1.熟悉汇编语言程序上机的一般过程和方法。
2.掌握宏汇编程序MASM5.1和链接LINK3.6的使用方法。
3.了解DEBUG调试汇编语言程序的过程及方法。
二、实验器材
电脑一台(带有命令提示符)
三、实验内容
显示字符串“Howdoyoudo.”
四、实验程序流程图
(一)试验程序:
datasegment
mesagedb"Howdoyoudo.",0dh,0ah,24h;想当于C语言“\n”和结束字符
dataends
codesegment
assumecs:
code,ds:
data;通知汇编程序有关段寄存器与逻辑段的关系
start:
movax,data;ds<==数据段地址
movds,ax
leadx,message;取字符串message的有效地址存入dx
movah,09h;调用9号功能显示字符串
int21h
movah,4ch;非标准方式返回DOS
int21h
codeends
endstart
(二)流程图:
五、实验结果及分析
(一)结果:
C:
\Users\Administrator>e:
E:
\>cdtest
E:
\test>cdtest1
E:
\test\test1>test1
Howdoyoudo.
E:
\test\test1>
(二)分析:
无
微机原理与接口技术实验报告
(2)
实验项目名称:
Debug程序调试实验
实验日期:
2014/4/11实验成绩:
实验评定标准:
1)实验结果及分析是否合理
A()B()C()
2)实验程序流程图是否正确
A()B()C()
3)实验报告是否按照规定格式
A()B()C()
一、实验目的
1.熟悉汇编语言程序上机的一般过程和方法。
2.掌握宏汇编程序MASM5.1和链接LINK3.6的使用方法。
3.了解DEBUG调试汇编语言程序的过程及方法。
二、实验器材
电脑一台(带有命令提示符)
三、实验内容
X和Y均为16位无符号数,写一个求表达式16X+Y值得程序
四、实验程序流程图
(一)试验程序:
dsegsegment
xxxdw1234h;设X为1234H
yyydw5678h;设Y为5678H
zzzdd?
;双自变量,用于保存结果
dsegends
csegsegment'CODE';指定代码段类别名,以便用MASM6.11汇编
assumecs:
cseg,ds:
dseg
start:
movax,dseg;DS<==数据段地址
movds,ax
movax,xxx;AX<==X
xordx,dx
movcx,16
mulcx;DX|AX<==X*16
addax,yyy;DX|AX<==DX|AX+Y
adcdx,0
movwordptrzzz,ax;zzz,<==DX|AX
movwordptrzzz+2,dx
movah,4ch
int21h
csegends
endstart
(二)流程图:
五、实验结果及分析
(一)结果:
E:
\test\test2>debugtest2.exe
-g
Programterminatednormally
-u
1472:
0000B87114MOVAX,1471
1472:
00038ED8MOVDS,AX
1472:
0005A10000MOVAX,[0000]
1472:
000833D2XORDX,DX
1472:
000AB91000MOVCX,0010
1472:
000DF7E1MULCX
1472:
000F03060200ADDAX,[0002]
1472:
001383D200ADCDX,+00
1472:
0016A30400MOV[0004],AX
1472:
001989160600MOV[0006],DX
1472:
001DB44CMOVAH,4C
1472:
001FCD21INT21
-d1471:
00000007
1471:
000034127856B87901004.xV.y..
-
(二)分析:
数据送存时,高位字节数据放在内存高地址单元,低位放在低地址。
微机原理与接口技术实验报告(3)
实验项目名称:
简单汇编语言设计实验
实验日期:
2014/4/18实验成绩:
实验评定标准:
1)实验结果及分析是否合理
A()B()C()
2)实验程序流程图是否正确
A()B()C()
3)实验报告是否按照规定格式
A()B()C()
一、实验目的
1.掌握宏汇编程序MASM5.1和链接LINK3.6的使用方法。
2.了解DEBUG调试汇编语言程序的过程及方法。
二、实验器材
电脑一台(带有命令提示符)
三、实验内容
求两个数的平均数,这两个数分别放在x单元赫尔y单元中,而平均值放在z单元中。
四、实验程序流程图
(一)试验程序:
.modelsmall
.data
xdb95;等于十六进制数5Fh
ydb87;等于十六进制数57h
zdb?
.code
mainprocfar
start:
pushds
movax,0
pushax
movax,_data;取数据段地址放入ds
movds,ax
moval,x;第一个数送入al
addal,y;两数相加,结果送入al
movah,0;带进位加法,进位送入ah
adcah,0
movbl,2;除数2送bl
divbl;求平均值,商送入al,余数送入ah
movz,al;平均值,即商送入z单元,结果为5Bh
ret
mainendp
endstart
(二)流程图:
五、实验结果及分析
(一)结果:
E:
\test\test3>debugtest3.exe
-g
Programterminatednormally
-u
1471:
00001EPUSHDS
1471:
0001B80000MOVAX,0000
1471:
000450PUSHAX
1471:
0005B87214MOVAX,1472
1471:
00088ED8MOVDS,AX
1471:
000AA00E00MOVAL,[000E]
1471:
000D02060F00ADDAL,[000F]
1471:
0011B400MOVAH,00
1471:
001380D400ADCAH,00
1471:
0016B302MOVBL,02
1471:
0018F6F3DIVBL
1471:
001AA21000MOV[0010],AL
1471:
001DCBRETF
1471:
001E5FPOPDI
1471:
001F57PUSHDI
1471:
0018F6F3DIVBL
1471:
001AA21000MOV[0010],AL
1471:
001DCBRETF
-d1472:
0E10
1472:
00005F57_W
1472:
00105B[
-
(二)分析:
对于div指令,注意其用法是ax除以单个字节数据时,商自动存入al,余数送存到ah。
微机原理与接口技术实验报告(4)
实验项目名称:
汇编程序设计1
实验日期:
2014/4/25实验成绩:
实验评定标准:
1)实验结果及分析是否合理
A()B()C()
2)实验程序流程图是否正确
A()B()C()
3)实验报告是否按照规定格式
A()B()C()
一、实验目的
1.熟悉汇编语言程序上机的一般过程和方法。
2.掌握宏汇编程序MASM5.1和链接LINK3.6的使用方法。
3.学会使用loop。
二、实验器材
电脑一台(带有命令提示符)
三、实验内容
在屏幕上显示26个大写英文字母
四、实验程序流程图
(一)试验程序:
.modelsmall
.code
start:
movax,_text
movds,ax
leadx,mess;取提示字符串首地址
movah,09h
int21h
movcx,26;用于loop检验循环条件的次数,此处为英文字母个数
movdl,41h;41h,即‘A’的ASCII码
lp:
movah,02h;显示器显示一个字符
int21h
incdl;从‘A’的ASCII码递增
looplp
movah,4ch
int21h
messdb"26Englishletters:
",0dh,0ah,24h
endstart
(二)流程图:
N
Y
五、实验结果及分析
(一)结果:
E:
\test\test4>test4
26Englishletters:
ABCDEFGHIJKLMNOPQRSTUVWXYZ
(二)分析:
每次循环显示前先检测计数值cx是否为零,不为零,则依次显示地震后的字母。
微机原理与接口技术实验报告(5)
实验项目名称:
汇编程序设计2
实验日期:
2014/5/2实验成绩:
实验评定标准:
1)实验结果及分析是否合理
A()B()C()
2)实验程序流程图是否正确
A()B()C()
3)实验报告是否按照规定格式
A()B()C()
一、实验目的
1.熟悉汇编语言程序上机的一般过程和方法。
二、实验器材
电脑一台(带有命令提示符)
三、实验内容
分支程序设计:
给定符号函数,给定x任意值,假定为-25,且存放在x单元,函数值y存放在y单元,根据x的值确定函数y的值。
四、实验程序流程图
(一)试验程序:
.model
.data
xdb25;此处选择一个正数,那么屏幕将显示“+1”
ydw?
.code
mainprocfar
start:
pushds
movax,0
pushax
movax,_data
movds,ax
moval,x;al<==x
cmpal,0
jgeloop1;x0转loop1
moval,2dh;否则将字符‘-’负号送入y单元低字节
movbyteptry,al
movdl,byteptry;显示字符‘-’,即负号
movah,02h
int21h
movdl,31h;显示字符‘1’
movah,02h
int21h
moval,0ffh
movbyteptry+1,al;把-1的补码存入y单元的高字节地址
jmpnext;直接跳转到最后,程序结束
loop1:
jeloop2;x=0时转loop2
moval,2bh;否则将字符‘+’保存到y单元低地址且显示出来
movbyteptry,al
movdl,byteptry
movah,02h
int21h
moval,1;把1送入y单元高地址
movbyteptry+1,al
movdl,byteptry+1
adddl,30h;显示字符‘1’
movah,02h
int21h
jmpnext
loop2:
moval,0;将0送入y单元
movbyteptry,al
movdl,byteptry
moval,0
movbyteptry+1,al
movdl,byteptry+1
adddl,30h;显示字符‘0’
movah,02h
int21h
next:
ret
mainendp
endstart
(二)
(三)流程图:
(四)
五、实验结果及分析
(一)结果:
E:
\test\test5>test5
+1
E:
\test\test5>debugtest5.exe
-g
+1
Programterminatednormally
-u
1471:
00001EPUSHDS
1471:
0001B80000MOVAX,0000
1471:
000450PUSHAX
1471:
0005B87714MOVAX,1477
1471:
00088ED8MOVDS,AX
1471:
000AA00800MOVAL,[0008]
1471:
000D3C00CMPAL,00
1471:
000F7D1BJGE002C
1471:
0011B02DMOVAL,2D
1471:
0013A20900MOV[0009],AL
1471:
00168A160900MOVDL,[0009]
1471:
001AB402MOVAH,02
1471:
001CCD21INT21
1471:
001EB231MOVDL,31
-d1477:
0809
1477:
0000192B.+
(二)分析:
本程序添加了显示功能,较教材有所改进。
微机原理与接口技术实验报告(6)
实验项目名称:
汇编程序设计3
实验日期:
2014/5/9实验成绩:
实验评定标准:
1)实验结果及分析是否合理
A()B()C()
2)实验程序流程图是否正确
A()B()C()
3)实验报告是否按照规定格式
A()B()C()
一、实验目的
1.熟悉汇编语言程序上机的一般过程和方法。
2.掌握宏汇编程序MASM5.1和链接LINK3.6的使用方法。
3.了解DEBUG调试汇编语言程序的过程及方法。
二、实验器材
电脑一台(带有命令提示符)
三、实验内容
从xx单元开始的30个连续单元中存放有30个无符号数,从中找出找出最大者送入yy单元中。
四、实验程序流程图
(一)试验程序:
.modelsmall
.data
xxdb73,59,61,45,81
db107,37,25,14,64
db3,17,9,23,55,97
db115,78,121,67
db215,137,99,241
db36,58,87,100,74,62;其中最大的数应该是F1h,即241
yydb?
.code
mainprocfar
start:
pushds
movax,0
pushax
movax,_data
movds,ax
moval,xx
movsi,offsetxx
movcx,29
loop1:
incsi
cmpal,[si]
jaeloop2
xchgal,[si]
loop2:
looploop1
movyy,al
ret
mainendp
endstart
(二)流程图:
Y
N
Y
五、实验结果及分析
(一)结果:
E:
\test\test7>debugtest7
Filenotfound
-q
E:
\test\test7>debugtest7.exe
-g
Programterminatednormally
-u
1471:
00001EPUSHDS
1471:
0001B80000MOVAX,0000
1471:
000450PUSHAX
1471:
0005B87314MOVAX,1473
1471:
00088ED8MOVDS,AX
1471:
000AA00000MOVAL,[0000]
1471:
000DBE0000MOVSI,0000
1471:
0010B91D00MOVCX,001D
1471:
001346INCSI
1471:
00143A04CMPAL,[SI]
1471:
00167302JNB001A
1471:
00188604XCHGAL,[SI]
1471:
001AE2F7LOOP0013
1471:
001CA21E00MOV[001E],AL
1471:
001FCBRETF
-d1473:
001e
1473:
0000493B3D2D49512519-0E40031109173761I;=-IQ%..@....7a
1473:
00106B4E7343798963D7-243A57644A3EF1kNsCy.c.$:
WdJ>.
进入调试,而没有执行‘g’命令时,内存单元储存的数据如下:
E:
\test\test7>debugtest7.exe
-d1473:
001e
1473:
0000493B3D2D516B2519-0E40031109173761I;=-Qk%..@....7a
1473:
0010734E7943D78963F1-243A57644A3E00sNyC..c.$:
WdJ>.
(二)分析:
该程序命令执行单步运行应该用‘t’,而不是用‘p’
微机原理与接口技术实验报告(7)
实验项目名称:
硬件控制实验
实验日期:
2014/5/16实验成绩:
实验评定标准:
1)实验结果及分析是否合理
A()B()C()
2)实验程序流程图是否正确
A()B()C()
3)实验报告是否按照规定格式
A()B()C()
一、实验目的
1.掌握宏汇编程序MASM5.1和链接LINK3.6的使用方法。
2.了解DEBUG调试汇编语言程序的过程及方法。
二、实验器材
电脑一台(带有命令提示符)
三、实验内容
利用DOS系统实现人机对话:
在屏幕上显示并键入一行信息。
四、实验程序流程图
(一)试验程序:
.model
.data
parsdb100;定义输入缓冲区
db?
db100dup('$')
mesgdb"whatisyourname?
",0dh,0ah,24h;要显示的提示信息
.stack
db100dup(?
)
.code
startprocfar
begin:
pushds
movax,0
pushax
movax,_data
movds,ax
disp:
movdx,offsetmesg
movah,9;利用9号功能调用显示提示
int21h
keybd:
movdx,offsetpars
movah,10;利用10号功能调用接收键盘输入
int21h
movah,02h
movdl,0dh;与下面的程序构成换行的功能
int21h
movah,02h
movdl,0ah;与上面的程序构成换行的功能
int21h
leadx,pars+2
movah,09h
int21h
ret
startendp
endbegin
(二)流程图:
五、实验结果及分析
(一)结果:
E:
\test\test8>test8
whatisyourname?
abcdefghijklmnopqrstuvwxyz,.<>/?
;'\:
"|[]{}-=_+!
@#$%^&*()1234567890
abcdefghijklmnopqrstuvwxyz,.<>/?
;'\:
"|[]{}-=_+!
@#
E:
\test\test8>test8
whatisyourname?
asfhjkfhqiuytrihnlgvnzxcbldpqk\gd]qomg'a!
@#%^&**()()*(+_+0231465498752.242349.
asfhjkfhqiuytrihnlgvnzxcbldpqk\gd]qomg'a!
@#%^&**()()*(+_+0231465498752.242349.
E:
\test\test8>
(三)分析:
上面程序两次运行的结果有所不同,原因是int21h中断的9号功能是“显示器显示一个以‘$’为结束标志的字符窜”。