计算机硬件技术基础
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
本科实验报告
课程名称:计算机硬件技术基础
实验项目:汇编语言程序设计:综合程序设计实验实验地点:致远楼B303
专业班级:软件1229班学号:2012005829 学生姓名:田亚鹏
指导教师:
2014年05月09日
一、实验目的和要求:
1.通过分支程序设计、循环程序设计实验,掌握无条件转移指令、条件转移指令的格式、功能及使用方法。
2.掌握分支程序的结构、单分支和多分支程序的设计方法。
3.了解循环程序的基本结构和控制循环的方法。
4.掌握通过DOS中断调用使用键盘和显示器的方法。
二、实验内容和原理
1.编写一个汇编程序,要求对键盘输入的大写字母用小写字母显示出来,键盘输入的小写字母用大写字母显示出来。
2. 编写一个汇编程序,使得从键盘上输入十个以内的字符,以输入空格结束,然后按数字、字母和其它符号三类统计各自的个数,在屏幕上依次显示出统计结果。
三、主要仪器设备:HP6470b笔记本电脑
四、操作方法与实验步骤:
1.编写一个汇编程序,要求对键盘输入的大写字母用小写字母显示出来,键盘输入的小写字母用大写字母显示出来。
STACK SEGMENT STACK
DB 200 DUP(0)
STACK ENDS
DATA SEGMENT
X DB 0;
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
START: MOV AX,DATA
MOV DS,AX
MOV AH,01H
INT 21H
CMP AL,'a'
JNL NEXT
MOV X,'a'-'A'
ADD X,AL
MOV AH,02H
MOV DL,X
INT 21H
MOV AH,4CH
INT 21H
NEXT: MOV X,'A'-'a'
ADD X,AL
MOV AH,02H
MOV DL,X
INT 21H
MOV AH,4CH
CODE ENDS
END START
2. 编写一个汇编程序,使得从键盘上输入十个以内的字符,以输入空格结束,然后按数字、字母和其它符号三类统计各自的个数,在屏幕上依次显示出统计结果。
STACK SEGMENT STACK
DB 200 DUP(0)
STACK ENDS
DA TA SEGMENT
X DB '0'
DA TA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DA TA,SS:STACK
START: MOV AX,DATA
MOV DS,AX
SUB AX,AX
MOV BX,0
MOV CX,10
AA1: CMP CX,0
JZ STOP
MOV AH,1
INT 21H
CMP AL,'0'
JB CC2
CMP AL,'9'
JA CC1
INC BH
JMP NEXT1
CC1: CMP AL,'A' JB CC2
CMP AL,'Z'
JB NEXT
CMP AL,'a'
JB CC2
CMP AL,'z'
JA CC2
NEXT: INC BL
JMP NEXT1
CC2: INC DH NEXT1: LOOP AA1 STOP: MOV AH,2 MOV DL,BH
ADD DL,X
INT 21H
MOV AH,2
MOV DL,BL
INT 21H
MOV AH,2
MOV DL,DH
ADD DL,X
INT 21H
MOV AX,4C00H
INT 21H4
CODE ENDS
END START
五、实验结果与分析:
六、讨论、心得:
由实验运行可知,上述两个程序正确。
其中也由于一些编码时的粗心大意而导致一些错误。如在程序端未加MOV AX,4C00H INT 21H 而将出现一些无缘无故的错误。并且一般而言使用中断时,必须有栈段。还有一些小的错误等。
体会:通过使用-u来进行反编译也是一种很好的进行测试的方法。并且对于一些并不熟悉的ASCALL码有时可以通过直接用字符的方法去做,省去记忆字符。