- 60
- 0
- 约4.31千字
- 约 12页
- 2019-08-22 发布于山西
- 举报
计算机科学系实验报告(首页)
一、实验目的:掌握子程序的编写和调用
二、实验内容、程序清单及运行结果
1.显示字符串
问题
显示字符串是现实工作中经常要用到的功能,应该编写一个通用的子程序来实现这个功能。我们应该提供灵活的调用接口,使调用者可以决定显示的位置(行、列)、内容和颜色。
子程序描述
名称:show_str
功能:在指定的位置,用指定的颜色,显示一个用0结束的字符串。
参数:(dh)=行号(取值范围0~24),(dl)=列号(取值范围0~79),
(cl)=颜色,ds:si指向字符串的首地址
返回:无
就用举例:在屏幕的8行3列,用绿色显示data段中的字符串。
assume cs:code
data segment
db Welcome to masm!, 0
data ends
code segment
start: mov dh, 8 ; 行号
mov dl, 3 ; 列号
mov cl, 2 ; 颜色
mov ax, data
mov ds, ax ; 将数据段地址放入至ds中
mov si, 0 ; 将si设置为数据段的偏移地址
call show_str
mov ax, 4c00h
int 21h
show_str:
……
code ends
end start
2.解决除法溢出的问题
问题
前面讲过,div指令可以做除法。当进行8位除法的时候,用al存储结果的商,ah存储结果的余数:进行16位除法的时候,用ax存储结果的商,dx存储结果的余数。可是,现在有一个问题,如果结果的商大于ah或ax所能存储的最大值,那么将如何?
比如,下面的程序段:
mov bh,1
mov ax,1000
div bh
进行的是8位除法,结果的商为1000,而1000在ah中放不下,
又比如,下面的程序段:
mov ax,1000h
mov dx,1
mov bx,1
div bx
进行的是16位除法,结果的商为11000H,而11000H在ax中存放不下。
我们在用div指令做除法的时候,很可能发生上面的情况:结果的商过大,超出了寄存器所能存储的范围。当CPU执行div等除法指令的时候。如果发生这样的情况,将引发CPU的一个内部错误。这个错误被称为:除法溢出。我们可以通过特殊的程序来处理这个错误, 这里我们不讨论这个错误的处理,这是后面的课程中要涉及的内容。下面我们仅仅来看一下除法溢出发生时的一些现象
除法溢出
图中展示了在windowsXP中使用DEBUG执行相关程序段的结果,div指令引发了CPU的除法溢出,系统对其进行了相关的处理。
好了,我们已经清楚了问题的所在:用div指令做除法的时候可能产生除法溢出。由于有这样的问题,在进行除法运算的时候要注意除数和被除数的值,比如1000000/10就不能用div指令来计算。那么怎么办呢?我们用下面的子程序divdw解决。
子程序描述
名称:divdw
功能:进行不会产生溢出的除法运算,被除数为dword型,除数为word型,结果为dword型。
参数:(ax)=dword型数据的低16位
(dx)=dword型数据的高16位
(cx)=除数
返回:(dx)=结果的高16位,(ax)=结果的低16位
(cx)=余数
应用举例:计算1000000/10(F4240H/0AH)
mov ax,4240h
mov dx,000fh
mov cx,0ah
call divdw
提示
给出一个公式:
X:被除数,范围:[0,FFFF FFFF]
N:除数,范围:[0,FFFF]
H:X高16位,范围:[0,FFFF]
L:X低16位,范围:[0,FFFF]
int():描述性运算符,取商,比如:int(38/10)=3
rem():描述性运算符,取余数,比如:rem(38/10)=8
公式:X/N=int(H/N)*65536+[rem(H/N)*65536+L]/N
这个公式将可能产生溢出的除法运算:X/N,转变为多个不会产生溢出的除法运算。
公式中,等号右边的所有除法运算都可以用div指令来做,肯定不会导致除法溢出。
3.数值显示
问题
编程,将data段中的数据以十进制的形式显示出来。
data segment
dw 123,12666,1,8,3,38
data ends
这些数据在内存中都是二进制信息,标记了数值的大小。要把它们显示到屏幕上,成为我们能够读懂的信息,需要进行信息
您可能关注的文档
最近下载
- 园林植物生产技术绪论.pptx
- 话剧《桑树坪纪事》中饰演李福林的角色创造阐述.docx VIP
- 公司海外工程项目应急响应与处理预案.docx VIP
- EMBA《招才选将》测试卷2.docx VIP
- 2023年初二全等三角形所有知识点总结和常考题提高难题压轴题练习含答案解析.pdf VIP
- 初二平行四边形所有知识点总结和常考题提高难题压轴题练习(含答案解析).pdf VIP
- 第1章 平行线(优质类型)-浙教版七年级《数学》下册考点解惑.docx VIP
- 【医疗推荐】三甲医院-出生缺陷监测及三项报告监测方案(001).pdf VIP
- 新编日语教程4-课件-第1课.ppt VIP
- 夏洛特烦恼话剧剧本.doc VIP
原创力文档

文档评论(0)