文档库 最新最全的文档下载
当前位置:文档库 › 微机原理课程设计.doc

微机原理课程设计.doc

微机原理课程设计.doc
微机原理课程设计.doc

课程设计说明书

课程名称 : 微机原理课程设计

题目 :数制转换实验

院系:理学院

专业班级:应用物理13-1

学号:2013305188

学生姓名:李立才

指导教师:李声

2016年 6 月17日

安徽理工大学课程设计(论文)任务书

理学院院系信计教研室

学号2013305188学生姓名李立才专业(班级)应物 13-1

设计题目数制转换实验,小写转大写实验

在 masm for windows 上经 debug 调试可运行;可满足设计要求。

为掌握键盘接受数据的方法,并了解将键盘数据显示时必须转换为ASCII 码的原理,编写程序,将键盘接受到的四位十六进制数据转换为等值的二进制数

显示。

计为了解小写字母和大写字母在计算机内的表示方法,并学习如何进行转换,

编写程序,接受键盘字符,并将其中的小写字母转变为大写字母,然后显示在屏求

幕上。

作查阅相关材料,完成设计,完成设计报告

1.综合论证,确定设计方案。

2.查阅资料,完成设计。

3.完成设计报告。

[1] 姚燕南 ,薛钧义主编 .《微型计算机原理》第四版[M]. 西安电子科技大学出版社 . 参[2] 潘峰主编 .《微型计算机原理与汇编语言》第三版[M]. 电子工业出版社 .

考[3] 雏逢兴编著 .《计算机硬件技术基础》 [M], 高等教育出版社 .

指导教师签字教研室主任签字

年月日

安徽理工大学课程设计(论文)成绩评定表

学生姓名:李立才学号:2013305188 专业班级:应物13-1 课程设计题目:数制转换实验

指导教师评语:

成绩:

指导教师:

年月日

目录

1. 课程设计实验目的与要求 (1)

从键盘输入数据并显示 (1)

将键盘输入的小写字母转换成大写字母 (1)

2.课程设计实验内容 (1)

从键盘输入数据并显示 (1)

将键盘输入的小写字母转换成大写字母 (2)

3.课程设计实验流程图 (2)

从键盘输入数据并显示 (2)

将键盘输入的小写字母转换成大写字母 (3)

4.课程设计实验程序 (4)

从键盘输入数据并显示 (4)

将键盘输入的小写字母转换成大写字母 (8)

5. 课程设计实验运行结果 (12)

从键盘输入数据并显示 (12)

将键盘输入的小写字母转换成大写字母 (12)

6. 课程设计实验心得 (13)

1.课程设计实验目的与要求

从键盘输入数据并显示

1.掌握键盘接受数据的方法,并了解将键盘数据显示时必须转换为

ASCII码的原理,编写程序,将键盘接受到的四位十六进制数据转

换为等值的二进制数显示。

2.掌握子程序定义和调用的方法。

3.掌握循环移位指令的用法和无符号数比较大小的方法。

将键盘输入的小写字母转换成大写字母

1.了解小写字母和大写字母在计算机内的表示方法,并学习如何进行

转换,编写程序,接受键盘字符,并将其中的小写字母转变为大写

字母,然后显示在屏幕上。

2.熟练掌握汇编语言程序设计的方法及上机步骤

3.掌握将小写字母转换为相应的大写字母的方法

4.掌握子程序的设计方法

5.掌握 DOS功能的调用方法

2.课程设计实验内容

从键盘输入数据并显示

为了解小写字母和大写字母在计算机内的表示方法,并学习如何进行转换,编写程序,接受键盘字符,并将其中的小写字母转变为大写字母,然后显示在屏

幕上。

课程设计要求进行小写字母到大写字母的转换。其实字母大小写的区别在

于他们的 ASCII码范围,它们之间的转换其实就是加减相应的ASCII码值。在判断输入的字母是大写的还是小写的(即判断输入符号ASCII码在 41H~5AH还是在61H~7AH内)之后,决定判断是加上还是减去ASCII码值

将键盘输入的小写字母转换成大写字母

第一步是实现小写字母向大写字母的转换,主要利用小写字母比大写字母大 20H 的关系。第二部要键盘输入,显示输出。

3.课程设计实验流程图

从键盘输入数据并显示

图 3-1 实验流程图

将键盘输入的小写字母转换成大写字母

图 3-2 实验流程图

4.课程设计实验程序

从键盘输入数据并显示

data segment

;数据区定义开始

strr db 'please input hexadecimal number:$'

errr db 'this is an error number!$'

;数据区定义结束

data ends

stack segment stack

;堆栈区定义开始

db 100 dup()

;堆栈区定义结束

stack ends

code segment

;代码区定义开始

assume cs:code,ds:data,ss:stack start: mov ax,data

mov ds,ax

mov ax,stack

mov ss,ax

;设定区址

mov cx,00h

xor bx,bx

call getnum

; 按提示输入四个字符,存入BX 中

mov cx,10h

;用于下面的 loop next 处,因为 BX 共有 16 位

call newline

;转到新行

mov dl,0ah

mov ah,02h

int 21h

;换行

mov dl,0dh

mov ah,02h

int 21h

;回车

next:rol bx,1

;把 BX 所存字符的二进制的最高位移到最低位

mov dl,bl

and dl,01h

;获取最低位

add dl,30h

;将最低位转成数字,即字符 '0' 或 '1'

mov ah,02h

int 21h

;即将之前 BX 的最高位输出到屏幕

loop next

;循环,将 BX 的每一位都输出来

mov ah,4ch

int 21h

;完成

;----------------------------------------

; 功能:接受四个字符,必须输入0-9 A-F,否则提示错要重输

;假设先后输入 1 2 3 4,则最后 BX 为 0x1234

getnum proc near

;子过程 getnum 开始

again:push cx

mov cl,4

shl bx,cl

;把 BX 左移四位,空出了低四位

again1: call newline

;转到新行

lea dx,strr

mov ah,09h

int 21h

; 输出 "please input hexadecimal number:"

mov ah,01h

int 21h

;接受输入字符

cmp al,46h

ja done

;如果字符比 'F' 大则转到 done

cmp al,41h

jb next1

;如果字符比 'A' 小则转到 next1

sub al,07h

;如果字符在 'A' 和 'F' 间,则减七

;提示:数字 1-9 为 0x31-0x39,字符 A-F 处理后为 0x3A-0x3F,正好接在数字后

jmp tt

next1: cmp al,39h

ja done

;如果字符比 '9' 大则转到 done

tt:cmp al,30h

jb done

;如果字符比 '0' 小则转到 done

sub al,30h

; 减 0x30,于是原字符0-9 A-F 变成相应的十六进制数0x0-0xF

mov ah,00h

add bx,ax

; 把 0x0-0xF 存到 bx 的低四位

pop cx

inc cx

cmp cx,04h

;是否循环了四次

je tt2

;是的话就跳到 tt2 结束

jmp again

;否则跳到 again 再来一次

done:call newline

lea dx,errr

mov ah,09h

int 21h

;如果输入的字符不符合要求,输出错误提示

jmp again1

;转到 again1 再次接受输入

tt2:ret

; 子过程getnum 结束

getnum endp

;----------------------------------------

;功能:输出回车换行符,即转到新行

newline proc near

;子过程 newline 开始

mov dl,0ah

;设输出字符为 0x0A,即换行符

mov ah,02h

int 21h

mov dl,0dh

;设输出字符为 0x0D,即回车符

mov ah,02h

int 21h

ret

; 子过程newline 结束

newline endp

;----------------------------------------

;代码区定义结束

code ends

;指定执行起点

end start

将键盘输入的小写字母转换成大写字母

DATAS SEGMENT

MESSAGE DB 'Welcome to the system!',13,10,13,10

DB 'The function of the program is changing small letters to capital letters.',13,10

DB 'If you enter capital letters or numbers there will be no changes.',13,10,13,10

DB 'Please enter a string.',13,10,'$'

CR DB 13,10,'$' ;回车换行

STRING DB 100

DB 0

DB 80 DUP(0) 定;义缓冲区

AGAIN DB 'Do you want to try again(Y or N)',13,10,'$'

ERROR DB 'ERROR!',13,10,'Please enter the right commomds.',13,10,'$错'; 误提示

DATAS ENDS

STACKS SEGMENT

DB 200 DUP()

STACKS ENDS

CODES SEGMENT

ASSUME CS:CODES,DS:DATAS,SS:STACKS

START:

HEAD:

MOV AX,DATAS

MOV DS,AX

LEA DX,MESSAGE输出;提示语

MOV AH,09H

INT 21H

LEA DX,STRING

MOV AH,0AH

INT 21H;把字符串输入到 BUF 区

LEA DX,CR

MOV AH,09H

INT 21H;以上为回车换行

LEA SI,STRING+2把;字符串首地址存入BX

MOV CL,STRING+1把;字符个数存 CX

MOV CH,0

NEXT1:

MOV DL,[SI]

CMP DL,'a'

JB NEXT2

CMP DL,'z'

JA NEXT2 ;ASCII码小

a 和大于z 的跳过,其余的减32

32

SUB DL,20H ;大小写字母的ASCII码

NEXT2:

MOV AH,02H

INT 21H

INC SI;BX 自加,判断下一个字符

DEC CX;CX自减,最终将是0

JNE NEXT1 ;CX非零时,跳回 NEXT1

MOV DX,OFFSET CR输出;回车换行

MOV AH,09H

INT 21H

JMP EXIT

OVERFLOW:

;错误提示

LEA DX,CR

MOV AH,09H

INT21H

LEA DX,ERROR

MOV AH,09H

INT21H

EXIT:

LEA DX,CR

MOV AH,09H

INT 21H

LEA DX,AGAIN 提;示是否再试一次

MOV AH,09H

INT21H

MOV AH,01H INT21H

PUSH AX

LEA DX,CR

MOV AH,09H

INT 21H

POP AX CMP AL,'Y'

JZ HEAD

CMP AL,'y'

JZ HEAD

CMP AL,'N'

JZ OVER

CMP AL,'n'

JZ OVER

JMP OVERFLOW

OVER:

MOV AH,4CH

INT 21H

CODES ENDS

END START

5.课程设计实验运行结果

从键盘输入数据并显示

图 5-1 实验运行结果将键盘输入的小写字母转换成大写字母

图 5-2 实验运行结果

6.课程设计实验心得

通过这次课程设计,使我认识到自己理论知识掌握不够,对于许多指令和

一些基本的编程方法都掌握不清晰。为了顺利完成课程设计,我重新拿起课本,

用心阅读,问题才一一解决。由此看来,知识只有在实践中才能真正掌握。难怪

人们说汇编语言编程必须在使用中慢慢理解。

本学期做了许多微机原理的实验,开始以为这次课程设计会像前几次实验

简单。直到要编写程序实现的时候,才发现自己对汇编程序的了解确实还不够,

尤其是编程方面的能力有待提高。在不断地再次学习和理解过程中,我慢慢掌握了更多汇编语言的应用知识,最终写出了大小写字母转换的程序。

把编写好的程序输入软件时候,也出现了许多小问题,比如没有定义变量

等等。归纳起来都是因为编程掌握不牢固,写程序没有条理,加上自己粗心大意的恶习依旧没改正造成的,以后需要努力改正。

总的来说,这次课程设计,自己受益匪浅。不但加固了微机原理知识的理解,而且加强了对汇编语言的应用能力。同时,非常感谢指导老师与同学给予我在编程方面的帮助,让我能够完成这次设计。

参考文献

[1]姚燕南 ,薛钧义主编 .微型计算机原理 (第四版 )[ M],西安:西安电子科技大学

出版社 ,2003

[2] 潘峰主编 .微型计算机原理与汇编语言(第三版 )[ M ] ,西安电子工业出版

社 ,2003

[3]雏逢兴编著 .计算机硬件技术基础 [M],北京:高等教育出版社 ,1998

[4]王永山等编著 .微型计算机原理与应用 [M] ,西安:电子科技大学出版社, 1999

[5]舒贞权等编著 .Intel 8086/8088 系列微型计算机原理 [ M].西安:西安交通大学

出版社, 1993

[6]Hwang S, Choi S. Ironbird Ground Test for Tilt Rotor Unmanned Aerial Vehicle[J]. International Journal of Aeronautical and Space Science. 2010, 11(4): 313-318 [ 7 ]Miller M, Narkiewicz J. Tiltrotor modelling for simulation in various flight conditions[J]. Journal of Theoretical and Applied Mechanics. 2006, 44(4): 881-906

相关文档