本科实验报告
课程名称: 计算机硬件技术基础
实验项目: 汇编语言程序设计:综合程序设计实验
实验地点: 致远楼B303
专业班级: 软件1229班 学号: 2012005829
学生姓名: 田亚鹏
指导教师:
2014年 05月 09日
1 / 6
一、 实验目的和要求:
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'
2 / 6
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 DATA SEGMENT X DB '0' DATA ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX SUB AX,AX MOV BX,0
3 / 6
MOV DX,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
4 / 6
ADD DL,X INT 21H MOV AH,2 MOV DL,DH ADD DL,X INT 21H MOV AX,4C00H INT 21H4 CODE ENDS END START
五、实验结果与分析:
5 / 6
六、讨论、心得:
由实验运行可知,上述两个程序正确。
其中也由于一些编码时的粗心大意而导致一些错误。如在程序端未加 MOV AX,4C00H INT 21H 而将出现一些无缘无故的错误。并且一般而言使用中断时,必须有栈段。 还有一些小的错误等。
体会:通过使用-u来进行反编译也是一种很好的进行测试的方法。并且对于一些并不熟悉的ASCALL码有时可以通过直接用字符的方法去做,省去记忆字符。
6 / 6
因篇幅问题不能全部显示,请点此查看更多更全内容