您的位置:首页 > 其它

汇编语言--王爽--实验9 子程序

2014-09-12 23:02 246 查看
今天对于这个程序,研究了一下午。其他高级语言在调用函数时候都是系统帮助暂存主调函数的信息,汇编则把这些实现描述出来了。

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

mov si,0

call show_str

mov ax,4c00h

int 21h

show_str:

push dx

push cx

push ax

push si

push ds

mov ax,0b800h ;显存地址从b800开始

mov es,ax

dec dh ;0~7 第八行则减去1

mov ah,0

mov al,160 ;一行80个字符加上80个属性数据

mul dh

mov bx ,ax

dec dl ;第三列则减去1

mov ah,0

mov al,2 ;每一列两个字节

mul dl

add bx,ax

mov al,cl

x:
mov ch,0

mov cl,ds:[si]

jcxz ok

mov es:[bx],cl

mov cl,al

mov es:[bx+1],cl

add bx,2

inc si

jmp x

ok:

pop ds

pop si

pop ax

pop cx

pop dx

ret

code ends

end start

当程序运行到call,进入子程序后,先将主程序的所有寄存器先保存起来(其实对于这个程序不保存也可以运行),保存的目的是:因为寄存器都是有限的,如果子程序中用到主程序中的数据,可以保证主程序中的数据不被改变
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: