首页
社区
课程
招聘
[成果2.1]汇编实验10—— 编写子程序
发表于: 2008-1-7 09:39 19309

[成果2.1]汇编实验10—— 编写子程序

2008-1-7 09:39
19309
;==========================================================================
;文件名:exp10a.asm
;目的:完成并测试在指定的位置,用指定的颜色,显示一个用0结束的字符串的子程序
;==========================================================================
assume cs:code,ds:data
data segment
 str db '^_^Welcome to masm! ^_^',0
data ends
code segment
start:
	mov ax,data
	mov ds,ax
	mov dh,12
	mov dl,30
	mov cl,10001010b
	mov si,0
	call show_str
	mov ax,4c00h
	int 21h
;==============================================================
;名称:show_str
;功能:在指定的位置,用指定的颜色,显示一个用0结束的字符串
;参数:(dh)=行号(取值范围0~24),(dl)=列号(取值范围0~79),
;	(cl)=颜色,ds:si指向字符串的首地址
;返回:无
;==============================================================
show_str: 
	push dx
	push si
	push di
	push cx
	push ax
        mov ax,0b800h
        mov es,ax
	mov ax,160
	mul dh
        mov dh,0
        add ax,dx
        add ax,dx
	sub ax,2
	mov di,ax
        mov ah,cl
output:	
        mov ch,ds:[si]
        mov cl,0
	jcxz ok
        mov byte ptr es:[di],ch
        mov byte ptr es:[di+1],ah
	inc si
	inc di
	inc di
        jmp short output
ok:
	pop ax
	pop cx
	pop di
	pop si
	pop dx
	ret
code ends
end start
;=================================================================
;文件名:exp10b.asm
;目的:8086下实现32位除法功能,解决16位除法溢出的问题
;=================================================================
assume cs:code,ss:stack
stack segment
dw 8 dup(0)
stack ends
code segment
start:
	mov ax,stack
	mov ss,ax
	mov sp,16
	mov ax,4c40h
	mov dx,0fh
	mov cx,0ah
	call divdw2
	mov ax,4c00h
	int 21h
;=================================================================================
;名称:divdw
;功能:进行不会产生溢出的除法运算,被除数为dword型,除数为word型,结果为dword型
;参数:(ax)=dword型数据的低16位
;      (dx)=dword型数据的高16位
;      (cx)=除数
;返回:(dx)=结果的高16位,(ax)=结果的低16位
;      (cx)=余数
;==================================================================================
divdw:
	push bx
	push ax
	mov ax,dx
	mov dx,0
	div cx
	mov bx,ax
	pop ax
	div cx
	mov cx,dx
	mov dx,bx
	pop bx
 	ret
code ends
end start

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 7
支持
分享
最新回复 (16)
雪    币: 271
活跃值: (18)
能力值: ( LV12,RANK:370 )
在线值:
发帖
回帖
粉丝
2
学习 学习....
2008-1-7 09:59
0
雪    币: 486
活跃值: (13)
能力值: ( LV9,RANK:430 )
在线值:
发帖
回帖
粉丝
3
占个位置留以后用。
2008-1-7 11:03
0
雪    币: 266
活跃值: (60)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
4
写的好详细啊。。不是成果吗?
2008-1-7 14:49
0
雪    币: 214
活跃值: (40)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
16位的,不会
2008-1-7 19:13
0
雪    币: 347
活跃值: (30)
能力值: ( LV9,RANK:420 )
在线值:
发帖
回帖
粉丝
6
期待楼主所有贴的CHM,用来给我等菜鸟做汇编入门教程,真的忒好了,特别是那几个试验报告,忒爽了
2008-1-7 20:26
0
雪    币: 266
活跃值: (52)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
7
LZ长期对16位的汇编孜孜不倦,看来是胸怀大志啊,偑服
2008-1-7 21:12
0
雪    币: 200
活跃值: (27)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
我要实验3
2008-1-8 13:52
0
雪    币: 486
活跃值: (13)
能力值: ( LV9,RANK:430 )
在线值:
发帖
回帖
粉丝
9
这个是实验课题的补充,成果还没出来,不过就快了。


实验3有是有,很短的,主要是关于堆栈溢出导致的CPU执行无效指令的错误。

还有就是谢谢各位的关注和支持,同时我也欢迎对汇编有兴趣的朋友加入到这次专题运行中来,让我们一起努力吧,把我们的努力变成看得见摸得着的丰硕的成果。
2008-1-8 22:30
0
雪    币: 1852
活跃值: (504)
能力值: (RANK:1010 )
在线值:
发帖
回帖
粉丝
10
写的很好啊,顶!
2008-1-8 23:58
0
雪    币: 709
活跃值: (2420)
能力值: ( LV12,RANK:1010 )
在线值:
发帖
回帖
粉丝
11
学习

呵呵,
2008-1-9 08:35
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
好文章, 学习
2008-1-31 11:13
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
楼主牛人啊!记得大学时有一个汇编课程设计是输入10个数并把它从大到小排序在屏幕上显示出来,哥们愣是们搞出来,不得已抄一个交了。惭愧啊!
2008-1-31 13:16
0
雪    币: 187
活跃值: (10)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
14
楼主这个专题是你的主意吗?这个是你自已想出来的吗?
我怎么看这个题目都是我老师王爽的书上原题,当时我在课堂上学的就是这段内容,是不是以后你的专题该有打印“DEC公司”数据的内容了、把“DEC”公司数据输出到显示器上,最后来个课程设计编写一个开机DOS下自启动的程序。

你现在拿出来随随便便就说是个专题这算什么,你起码也应该说明一下吧。
2008-1-31 16:26
0
雪    币: 212
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
15
确实这是学8088/8086书中的题目,不过这也应该是楼主的实验课题吧!
2008-4-15 15:37
0
雪    币: 808
活跃值: (10)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
16
的确是王爽老师的作业题。
王爽的书籍让我初步知道了什么是汇编原理,具体细节很详细。但是在WINDOWS下还是用32位的汇编吧
2008-6-16 12:24
0
雪    币: 229
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
MDB
17
强人呀,向你学习,留下脚印
2009-5-29 17:36
0
游客
登录 | 注册 方可回帖
返回
//