您的当前位置:首页正文

1303-肖翰-3901130814实验三

2022-09-02 来源:步旅网


《汇编程序设计》 实验报告 项目名称 实验三 专业班级 软件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

因篇幅问题不能全部显示,请点此查看更多更全内容