《汇编程序设计》 实验报告 项目名称 实验三 专业班级 软件1303班 学 号 3901130814 姓 名 肖翰 实验成绩: 批阅教师: 年 月 日 1
实验3
实验学时: 2 实验地点: 二综 实验日期:
一、实验目的
掌握汇编编程规范,熟悉编程环境。
二、实验内容
1、编写子程序把字符串中的小写字母转变为大写字母(参见教材实验11)。
2、编写0号中断处理程序,使得在除法溢出发生时在屏幕中间显示“divide error!”(参见教材实验12)。(请预习第12章并完成实验,时间不够则在课后完成)
三、实验步骤算法及关键代码 1、
实验关键代码: assume cs:codes,ds:datas
codes segment datas segment
db 'welcome to ChangSha' datas ends start: mov ax,datas mov ds,ax ;打印 mov cx,19 mov bx,0 call label2 mov bx,0 mov cx,19 s1: mov al,[bx] and al,11011111B
2
mov [bx],al inc bx loop s1 ;换行 MOV DL,0DH MOV AH,2 INT 21H MOV DL,0AH MOV AH,2 INT 21H ;打印 mov cx,19 mov bx,0 call label2
MOV AH,4CH
INT 21H label2:
mov dl, [bx]
;add dl, 30H
MOV AH,6
INT 21H INC BX loop label2 ret codes ends
3
2、实验步骤算法:
实验关键代码:
CODES SEGMENT
ASSUME CS:CODES START:
mov ax,cs mov ds,ax
mov si,offset do0 mov ax,0 mov es,ax mov di,200h
mov cx,offset do0end - offset do0 cld
rep movsb
;设置中断向量表
;0在这里是代表0号中断指令 mov ax,0 mov es,ax
mov word ptr es:[0*4],200h mov word ptr es:[0*4+2],0
;写入溢出程序 mov ax,1000h mov bl,1 div bl
4
MOV AH,4CH INT 21H do0:
jmp short do0start db \"overflow!\"
;显示字符串overflow do0start:
mov ax,cs mov ds,ax mov si,202h
mov ax,0b800h mov es,ax
mov di,12*160+36*2 ;设置es:di指向显存空间的中间位置
mov cx,9 s: mov al,[si] mov es:[di],al inc si add di,2 loop s
mov ah,4ch int 21h do0end:nop
;在这里do0相当于仅仅只是一个标记而已 CODES ENDS END START
5
四、实验小结(简单说明实验过程中出现的问题和解决方法)
相对来说,这个实验实验一其实是比较简单的,第一个的主要原理是通过and和or实现大写和小写字母的互换,原理是对ASCII的操作。
第二题开始是一直都没有思路,对照课本将代码一步步的完善的。最后在测试溢出的时候也没能弄好,就直接的将溢出的代码写在程序当中了,所以就有程序一结束就可以看见overflow的显示。
6
因篇幅问题不能全部显示,请点此查看更多更全内容