通信1304鲁守城41356118.docx
《通信1304鲁守城41356118.docx》由会员分享,可在线阅读,更多相关《通信1304鲁守城41356118.docx(34页珍藏版)》请在冰点文库上搜索。
通信1304鲁守城41356118
《微机原理与接口技术》
课程设计报告
班级:
通信1304
学号:
41356118
姓名:
鲁守城
2015年7月
目录
必做编程
第一题.............................1
第二题.............................3
第三题.............................6
第四题.............................11
选做编程
第五题.............................16
第六题.............................20
第一题
1、实验目的
1.掌握汇编语言的语法和编程思路
2.掌握汇编语言的编译工具《轻松汇编》安装使用方法及其相应的链接、调试方法;
二、实验内容
必做编程第1题:
设计程序,并在程序中显示自己的姓名拼音、班级、学号。
三、实验设备
PC微机一台
四、实验代码
STACKSSEGMENTSTACK;堆栈段
DW128DUP(?
);注意这里只有128个字节
STACKSENDS
DATASSEGMENT;数据段
STRINGDB'ID:
41356118',0AH,0DH,'CLASS:
TX1304',0AH,0DH,'NAME:
LUSHOUCHENG',0AH,0DH,'$'
DATASENDS
CODESSEGMENT;代码段
ASSUMECS:
CODES,DS:
DATAS
START:
MOVAX,DATAS;初始化
MOVDS,AX
LEADX,STRING
MOVAH,09H
INT21H
MOVAH,0AH
INT21H
MOVAX,4C00H;退出程序
INT21H
CODESENDS
ENDSTART
五、运行结果
第二题
一、实验目的
1.掌握汇编语言的语法和编程思路
2.掌握汇编语言的编译工具《轻松汇编》安装使用方法及其相应的链接、调试方法;
二、实验内容
必做编程第2题:
编写一个显示数字宏,在dos界面输入一个数字后,调用该宏显示输入的数字。
三、实验设备
PC微机一台
四、实验代码
;这是自动生成的代码模板
STACKSSEGMENTSTACK;堆栈段
DW128DUP(?
);注意这里只有128个字节
STACKSENDS
DATASSEGMENT;数据段
;请在这里定义您的数据
MS1DB'INPUTANUMBER:
$'
MS2DB0DH,0AH,'OUTPUTTHENUMBER:
$'
RESULTDB'$'
DB'$'
DATASENDS
SVARMACRO;按位转化成ASCII码显示
MOVAX,BX
MOVDX,0
DIVCX
MOVBX,DX
MOVDL,AL
ADDDL,30H
MOVAH,02H
INT21H
ENDM
CODESSEGMENT;代码段
ASSUMECS:
CODES,DS:
DATAS
START:
MOVAX,DATAS;初始化
MOVDS,AX
;请在这里添加您的代码
LEADX,MS1
MOVAH,9
INT21H
CALLCHANGE
MOVDL,0DH
MOVAH,2
INT21H
MOVDL,0AH
MOVAH,2
INT21H
LEADX,MS2
MOVAH,09H
INT21H
CALLSHOW
INT21H
;**************输入数字,并将其转化为十进制数************
CHANGEPROCNEAR
MOVBX,0
MOVCX,5
WVAR:
MOVAH,1
INT21H
SUBAL,30H
JBEXIT
CMPAL,9
JGEXIT
CBW;将AL的最高有效位D7扩展至AH
XCHGAX,BX
MOVDX,10
MULDX
XCHGAX,BX
ADDBX,AX
JMPWVAR
EXIT:
RET
CHANGEENDP
SHOWPROCNEAR
MOVCX,10000
SVAR
MOVCX,1000
SVAR
MOVCX,100
SVAR
MOVCX,10
SVAR
RET
SHOWENDP
MOVAX,4C00H;退出程序
INT21H
CODESENDS
ENDSTART
五、运行结果
第三题
一、实验目的
1.掌握汇编语言的语法和编程思路
2.掌握汇编语言的编译工具《轻松汇编》安装使用方法及其相应的链接、调试方法;
二、实验内容
必做编程第3题:
输入3个16比特数无符号数x、y和z,显示x和y,并计算r=x/y+z,显示r,要求处理溢出等情况。
三、实验设备
PC微机一台
四、实验代码
;这是自动生成的代码模板
STACKSSEGMENTSTACK;堆栈段
DW128DUP(?
);注意这里只有128个字节
STACKSENDS
DATASSEGMENT;数据段
;请在这里定义您的数据
MS1DB'INPUTX(16bit):
$'
MS2DB'INPUTY(16bit):
$'
MS3DB'INPUTZ(16bit):
$'
MS4DB'YCANNOTBE0!
$'
MS5DB'THEX,YIS:
$'
MS6DB'THEANSWERIS:
$'
MS7DB'THEANSWERISOUTOFRANGE!
$'
XDW?
YDW?
ZDW?
DATASENDS
CODESSEGMENT;代码段
ASSUMECS:
CODES,DS:
DATAS
START:
MOVAX,DATAS;初始化
MOVDS,AX
;****************x,y,z的输入***************
LEADX,MS1;显示X的输入提示
MOVAH,09H
INT21H
CALLCHANGE;X的输入
MOVDL,0DH
MOVAH,2
INT21H
MOVDL,0AH
MOVAH,2
INT21H
MOVX,BX
LEADX,MS2;显示Y的输入提示
MOVAH,09H
INT21H
CALLCHANGE;Y的输入
MOVDL,0DH
MOVAH,2
INT21H
MOVDL,0AH
MOVAH,2
INT21H
MOVY,BX
CMPY,0;判断Y是否为0
JNZNEXT
LEADX,MS4
MOVAH,9
INT21H
MOVAX,4C00H
INT21H
NEXT:
;显示X,Y
LEADX,MS5
MOVAH,9
INT21H
MOVDL,0DH
MOVAH,2
INT21H
MOVDL,0AH
MOVAH,2
INT21H
MOVBX,X
CALLSHOW
MOVDL,0DH
MOVAH,2
INT21H
MOVDL,0AH
MOVAH,2
INT21H
MOVBX,Y
CALLSHOW
MOVDL,0DH
MOVAH,2
INT21H
MOVDL,0AH
MOVAH,2
INT21H
LEADX,MS3;显示Z的输入提示
MOVAH,09H
INT21H
CALLCHANGE;Z的输入
MOVDL,0DH
MOVAH,2
INT21H
MOVDL,0AH
MOVAH,2
INT21H
MOVZ,BX
;************计算R=X/Y+Z并输出,且判断是否溢出*************
LEADX,MS6
MOVAH,9
INT21H
MOVDX,0
MOVAX,X
DIVY
ADDAX,Z
JCEFFOR
MOVBX,AX
CALLSHOW
MOVAH,4CH
INT21H
EFFOR:
LEADX,MS7
MOVAH,09H
INT21H
MOVDL,0AH
MOVAH,2
INT21H
MOVDL,0DH
MOVAH,2
INT21H
MOVBX,AX
CALLSHOW
MOVAH,4CH
INT21H
;*********输入16位无符号数,并将其转化为十进制*********
CHANGEPROCNEAR
MOVBX,0
MOVCX,16
WVAR:
MOVAH,1
INT21H
SUBAL,30H
JBEXIT
CMPAL,9
JGEXIT
CBW
XCHGAX,BX
MOVDX,2
MULDX
XCHGAX,BX
ADDBX,AX
LOOPWVAR
EXIT:
RET
CHANGEENDP
;**********显示子程序*********
SHOWPROCNEAR
MOVCX,10000
CALLSVAR
MOVCX,1000
CALLSVAR
MOVCX,100
CALLSVAR
MOVCX,10
CALLSVAR
MOVCX,1
CALLSVAR
RET
SHOWENDP
SVARPROCNEAR;按位转化成ASCII码显示
MOVAX,BX
MOVDX,0
DIVCX
MOVBX,DX
MOVDL,AL
ADDDL,30H
MOVAH,02H
INT21H
RET
SVARENDP
MOVAX,4C00H;退出程序
INT21H
CODESENDS
ENDSTART
五、运行结果
第四题
一、实验目的
1.掌握汇编语言的语法和编程思路
2.掌握汇编语言的编译工具《轻松汇编》安装使用方法及其相应的链接、调试方法;
二、实验内容
必做编程第4题:
从dos界面输入4个数字作为汇编程序的参数,编写冒泡法排序的子程序,进行排序输出最大值,并显示输入的4个数字和最大值。
三、实验设备
PC微机一台
四、实验代码
;这是自动生成的代码模板
STACKSSEGMENTSTACK;堆栈段
DW128DUP(?
);注意这里只有128个字节
STACKSENDS
DATASSEGMENT;数据段
MS1DB'PLEASEINPUT1NUMBER:
$'
MS4DB'PLEASEINPUT2NUMBER:
$'
MS5DB'PLEASEINPUT3NUMBER:
$'
MS6DB'PLEASEINPUT4NUMBER:
$'
MS2DB0DH,0AH,'THENUMBERIS:
$'
MS3DB0DH,0AH,'THEMAXNUMBERIS:
$'
XXDW8DUP(?
)
DW'$'
YYDB6DUP(?
)
DB'$'
DATASENDS
CODESSEGMENT;代码段
ASSUMECS:
CODES,DS:
DATAS
START:
MOVAX,DATAS;初始化
MOVDS,AX
LEADX,MS1;显示输入提示
MOVAH,9
INT21H
CALLCHANGE;输入四个数字
MOVXX[0],BX
MOVDL,0DH
MOVAH,2
INT21H
MOVDL,0AH
MOVAH,2
INT21H
LEADX,MS4
MOVAH,9
INT21H
CALLCHANGE
MOVXX[2],BX
MOVDL,0DH
MOVAH,2
INT21H
MOVDL,0AH
MOVAH,2
INT21H
LEADX,MS5
MOVAH,9
INT21H
CALLCHANGE
MOVXX[4],BX
MOVDL,0DH
MOVAH,2
INT21H
MOVDL,0AH
MOVAH,2
INT21H
LEADX,MS6
MOVAH,9
INT21H
CALLCHANGE
MOVXX[6],BX
CALLMAOPAO
MOVDL,0DH
MOVAH,2
INT21H
MOVDL,0AH
MOVAH,2
INT21H
LEADX,MS3;显示最大数字
MOVAH,9
INT21H
MOVDX,0
MOVAX,XX[0]
CALLSHOW
MOVDL,0DH
MOVAH,2
INT21H
MOVDL,0AH
MOVAH,2
INT21H
LEADX,MS2;显示输入的数字
MOVAH,9
INT21H
MOVDX,0
MOVAX,XX[0]
CALLSHOW
MOVDL,20H
MOVAH,2
INT21H
MOVDX,0
MOVAX,XX[2]
CALLSHOW
MOVDL,20H
MOVAH,2
INT21H
MOVDX,0
MOVAX,XX[4]
CALLSHOW
MOVDL,20H
MOVAH,2
INT21H
MOVDX,0
MOVAX,XX[6]
CALLSHOW
MOVDL,0DH
MOVAH,2
INT21H
MOVDL,0AH
MOVAH,2
INT21H
;*********按位转化为ASCII码显示****************
SHOWPROCNEAR
MOVDI,5
NEXT1:
MOVYY[DI],20H
DECDI
JNZNEXT1
MOVDI,5
MOVBX,10
OUTPUT:
DIVBX
ADDDL,30H
MOVYY[DI],DL
DECDI
MOVDX,0
CMPAX,0
JGOUTPUT
LEADX,YY
MOVAH,9
INT21H
RET
SHOWENDP
;********************输入处理子程序*****************
CHANGEPROCNEAR
MOVBX,0
WVAR:
MOVAH,1
INT21H
SUBAL,30H
JBEXIT
CMPAL,9
JGEXIT
CBW
XCHGAX,BX
MOVCX,10
MULCX
XCHGAX,BX
ADDBX,AX
JMPWVAR
EXIT:
RET
CHANGEENDP
;*********************冒泡排序法子程序************
MAOPAOPROCNEAR
MOVDI,3
LVAR:
MOVCX,DI
MOVBX,0
MVAR:
MOVAX,XX[BX]
CMPAX,XX[BX+2]
JAENVAR
XCHGAX,XX[BX+2]
MOVXX[BX],AX
NVAR:
ADDBX,2
LOOPMVAR
DECDL
JNZLVAR
RET
MAOPAOENDP
MOVAX,4C00H;退出程序
INT21H
CODESENDS
ENDSTART
五、运行结果
第五题
一、实验目的
1.掌握汇编语言的语法和编程思路
2.掌握汇编语言的编译工具《轻松汇编》安装使用方法及其相应的链接、调试方法;
二、实验内容
选做编程第5题:
设计键盘中断程序及其调用程序,在dos界面运行过程中,完成如下功能:
a)输入q键结束程序
b)输入i键记录一个长度最长为16个字母的姓名拼音
c)输入n键显示刚刚输入的姓名拼音(不能有空格)
三、实验设备
PC微机一台
四、实验代码
;这是自动生成的代码模板
STACKSSEGMENTSTACK;堆栈段
DW128DUP(?
);注意这里只有128个字节
STACKSENDS
DATASSEGMENT;数据段
;请在这里定义您的数据
MS1DB0AH,0DH,'INPUTYOURCHOICE(q/i/n):
$'
MS2DB0AH,0DH,'q:
EXIT!
$'
MS3DB0AH,0DH,'i:
recordyourname$'
MS4DB0AH,0DH,'n:
showyourname$'
MS5DB'INPUTISWORING!
$'
XDB17DUP(?
)
DATASENDS
CODESSEGMENT;代码段
ASSUMECS:
CODES,DS:
DATAS
START:
MOVAX,DATAS;初始化
MOVDS,AX
;请在这里添加您的代码
LEADX,MS1
MOVAH,9
INT21H
CALLHUICHE
SELECT:
MOVAX,0
MOVAH,1
INT21H
CMPAL,71H
JESTOP
CMPAL,69H
JESRECORD
CMPAL,6EH
JESHOW
JMPERROR
STOP:
LEADX,MS2
MOVAH,9
INT21H
JMPEXIT
SRECORD:
CALLTRECORD
SHOW:
CALLTSHOW
THUICHE:
CALLHUICHE
JMPSELECT
HUICHEPROCNEAR;回车换行
MOVDL,0AH
MOVAH,2
INT21H
MOVDL,0DH
MOVAH,2
INT21H
RET
HUICHEENDP
TRECORDPROCNEAR;记录子程序
LEADX,MS3
MOVAH,9
INT21H
CALLHUICHE
MOVCX,0
MOVSI,0
MOVCX,16
LEASI,X
INPUT:
MOVAH,1
INT21H
CMPAL,0DH
JETHUICHE
MOV[SI],AL
INCSI
DECCX
JNZINPUT
JMPTHUICHE
RET
TRECORDENDP
TSHOWPROCNEAR;显示子程序
LEADX,MS4
MOVAH,9
INT21H
CALLHUICHE
MOVSI,0
MOVCX,16
LEASI,X
OUTPUT:
MOVDL,[SI]
CMPDL,0DH
JETHUICHE
INCSI
CMPDL,20H
JEOUTPUT
MOVAH,02H
INT21H
DECCX
JNZOUTPUT
JMPTHUICHE
RET
TSHOWENDP
ERROR:
LEADX,MS5;输入错误
MOVAH,9
INT21H
JMPEXIT
EXIT:
MOVAH,4CH
INT21H
CODESENDS
ENDSTART
五、运行结果
第六题
一、实验目的
1.掌握汇编语言的语法和编程思路
2.掌握汇编语言的编译工具《轻松汇编》安装使用方法及其相应的链接、调试方法;
二、实验内容
选做编程第6题:
设计鼠标程序,完成如下功能
a)在屏幕显示鼠标的坐标位置
b)点击鼠标左键,程序退出
三、实验设备
PC微机一台
四、实验代码
;这是自动生成的代码模板
STACKSSEGMENTSTACK;堆栈段
DW128DUP(?
);注意这里只有128个字节
STACKSENDS
DATASSEGMENT;数据段
XDW0
YDW0
ZDW0
ODW0
LINEDB0
POPIDB0
S1DB05H
S2DB25H
COUNTDW0
DATASENDS
CODESSEGMENT;代码段
ASSUMECS:
CODES,DS:
DATAS
START:
MOVAX,DATAS;初始化
MOVDS,AX
CALLSEARCH
MOVAH,1
MOVCH,20H
INT10H
CALLCLEAR
CALLGUANGBIAO
CALLDDD
EXIT:
MOVAX,4C00H;退出程序
INT21H
;******************读取鼠标位置及其按钮状态
SEARCHPROCNEAR
A1:
MOVAX,3
INT33H
MOVX,CX
MOVY,DX
MOVCOUNT,50H
A2:
DECCOUNT
MOVAX,03H
INT33H
CMPCOUNT,00H
JNEA2
CMPCX,X
JNEYIDONG
CMPDX,Y
JNEYIDONG
JMPA1
YIDONG:
CALLZUOBIAO
CALLCLEAR
CALLGUANGBIAO
CALLDDD
CALLMOUSE
JMPA1
RET
SEARCHENDP
;******************9
MOUSEPROCNEAR
MOVAX,5
MOVBX,0
INT33H
CMPBX,1
JEEXIT
RET
M