《汇编语言程序设计》.docx
《《汇编语言程序设计》.docx》由会员分享,可在线阅读,更多相关《《汇编语言程序设计》.docx(14页珍藏版)》请在冰豆网上搜索。
《汇编语言程序设计》
《汇编语言程序设计》
实验书
姓名:
周雄武
学号:
1105100227
专业班级:
E+软件工程01
软件工程教研室编写
2012年8月
实验一汇编语言程序设计入门(4学时)
实验类别:
基本实验
实验目的:
1、掌握汇编语言上机过程。
2、掌握Debug命令的使用。
3、利用Debug调试简单程序
实验内容:
1、预习教材第六章内容
2、编写一个简单程序,功能自定
3、编译、链接、运行程序
4、利用debug调试程序
实验步骤
1、建立和修改源程序
2、汇编、链接程序
3、运行程序
4、调试程序:
使用常见调试命令
实验要求
1、实验过程记载:
源程序、编译步骤、链接步骤、运行及结果、调试过程。
2、实验报告:
采用以下方式之一。
(1)手写报告:
完整实验过程、实验分析及总结
(2)打印报告:
可采用抓图方式记录过程,必须有实验分析及总结。
实验二分支与循环程序设计(4学时)
实验类别:
基本实验
实验目的:
1、掌握分支程序设计方法。
2、掌握循环程序设计方法。
3、利用debug调试含有分支及循环结构的程序。
实验内容:
1、编写一个程序,显示AL寄存器中两位十六进制数。
2、编写一个程序,判断键盘输入的字符:
若是0~9,直接显示;若为A~Z或a~z,显示相应ASCII码;其它字符,显示“ERROR”。
3、对双字变量DV中值为1的位进行统计,统计结果存入XN单元中,并显示出来。
4、实现两个10字节数据相加,结果存入一个变量中,并显示结果。
实验步骤
1、分析题目要求
2、画出流程图
3、编写程序、静态检查、编译、运行、debug调试
4、撰写实验报告
实验要求
1、实验过程记载:
源程序、编译步骤、链接步骤、运行及结果、调试过程。
2、实验报告:
采用以下方式之一。
(1)手写报告:
完整实验过程、实验分析及总结
(2)打印报告:
可采用抓图方式记录过程,必须有实验分析及总结。
3、实验报告中必须有流程图及程序清单
第一题代码:
CODESEGMENT
ASSUMECS:
CODE
START:
MOVAL,2BH
MOVBL,AL
MOVDL,AL
MOVCL,4
SHRDL,CL
CMPDL,9
JBEL1
ADDDL,7
L1:
ADDDL,30H
MOVAH,02H
INT21H
MOVDL,BL
ANDDL,0FH
CMPDL,9
JBEL2
ADDDL,7
L2:
ADDDL,30H
MOVAH,02H
INT21H
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
第二题代码:
DATASEGMENT
BUF1DB"INPUTNUMBER$"
BUF2DB"INPUTLETTER$"
BUF3DB"ERROR$"
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVAH,01
INT21H
CMPAL,30H
JAEL1
L2:
CMPAL,41H
JAEL3
L4:
CMPAL,61H
JAEL5
FIN:
MOVAH,4CH
INT21H
L1:
CMPAL,39H
JBEPUT1
JMPL2
L3:
CMPAL,5AH
JBEPUT2
JMPL4
L5:
CMPAL,7AH
JBEPUT2
JMPPUT3
PUT1:
MOVDX,OFFSETBUF1
MOVAH,09H
INT21H
MOVDL,AL
MOVAH,02H
INT21H
JMPFIN
PUT2:
MOVDX,OFFSETBUF2
MOVAH,09H
INT21H
MOVDL,AL
MOVAH,02H
INT21H
JMPFIN
PUT3:
MOVDX,OFFSETBUF3
MOVAH,09H
INT21H
MOVBL,AL
MOVCL,4
SHRAL,CL
ADDAL,30H
MOVDL,AL
MOVAH,02H
INT21H
MOVAL,BL
ANDAL,0FH
ADDAL,30H
MOVDL,AL
MOVAH,02H
INT21H
MOVDL,'H'
MOVAH,02H
INT21H
JMPFIN
CODEENDS
ENDSTART
第三题代码:
DATASEGMENT
DVDD12345678H
XNDB0
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVAX,WORDPTRDV
MOVDX,WORDPTRDV[2]
MOVBL,XN
MOVCX,16
L3:
SHLAX,1
JNCA
INCXN
A:
LOOPL3
MOVCX,16
L4:
SHLDX,1
JNCB
INCXN
B:
LOOPL4
MOVAL,XN
MOVBL,AL
MOVDL,AL
MOVCL,4
SHRDL,CL
CMPDL,9
JBEL1
ADDDL,7
L1:
ADDDL,30H
MOVAH,02H
INT21H
MOVDL,BL
ANDDL,0FH
CMPDL,9
JBEL2
ADDDL,7
L2:
ADDDL,30H
MOVAH,02H
INT21H
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
第四题代码:
DATASEGMENT
BUF1DB01H,02H,03H,04H,05H,06H,07H,08H,09H,0AH
BUF2DB01H,02H,03H,04H,05H,06H,07H,08H,09H,0AH
SUMDB00H
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
LEASI,BYTEPTRBUF1
LEADI,BYTEPTRBUF2
MOVCX,10
A:
MOVAL,[SI]
MOVBL,[DI]
ADDAL,BL
ADDSUM,AL
ADDSI,1
ADDDI,1
LOOPA
MOVAL,SUM
MOVBL,AL
MOVDL,AL
MOVCL,4
SHRDL,CL
CMPDL,9
JBEL1
ADDDL,7
L1:
ADDDL,30H
MOVAH,02H
INT21H
MOVDL,BL
ANDDL,0FH
CMPDL,9
JBEL2
ADDDL,7
L2:
ADDDL,30H
MOVAH,02H
INT21H
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
实验三汇编语言综合设计(4学时)
实验类别:
综合实验
实验目的:
1、掌握子程序设计方法。
2、掌握利用汇编语言解决实际问题。
3、了解输入输出命令的使用。
4、了解系统功能调用
实验内容:
从从键盘输入10个数,存入变量BUF中,将每个单元的数据以ASCII码形式显示出来:
例如,某单元数据为18(12H),则显示31H(数字1的ASCII码)、32H(数字2的ASCII码)。
要求:
(1)输入10个数用子程序实现;
(2)转换功能(二位16进制数转换为ASCII码)用子程序实现;
(3)显示功能(显示各个ASCII码)用子程序实现。
(4)主程序循环调用子程序实现转换和显示。
DATASEGMENT
BUFDB?
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVCX,10
A:
CALLPRINTIN
CALLCHANGE
CALLSHOW
LOOPA
PRINTINPROC
MOVAH,01
INT21H
MOVBUF,AL
RET
PRINTINENDP
CHANGEPROC
MOVAL,BYTEPTRBUF
ADDAL,30H
MOVBUF,AL
RET
CHANGEENDP
SHOWPROC
MOVDL,BYTEPTRBUF
MOVAH,02H
INT21H
RET
SHOWENDP
MOVAH,4CH
INT21H
CODEENDS
ENDSTART