第一次作业给删了,懒得再做一次了。。。
1.阅读下面子程序,说明它完成的功能是什么?子程序的入口参数和出口参数各是什么?
子程序的功能:先将AX,DX清空,然后用循环将DS*16+BX处开始、CX个字单元的内容累加到DX:AX中。
入口参数:DS,BX,CX
出口参数:DX,AX
2.编写一个计算字符串长度的子程序,字符串以0结尾。入口参数:字符串的首地址指针为DS:SI;出口地址:在AX中返回字符串的长度。(直接在文本框中写出子程序部分即可,不要上传图片或附件)。
length proc
mov ax,0
mov bh,0
again:add ax,1
add si,1
mov bx,[si-1]
cmp bx,48
jne again
ret
length endp
3.编写程序,将字符串STRING1的内容复制到字符串STRING2中,要求由子程序来实现字符串的复制,并采用堆栈来传递参数。
data segment
STRING1 db "onetwo",0
STRING2 db "123456",0
data ends
stack segment
db 50 dup(?)
stack ends
code segment
assume cs:code,ds:data
copy proc
mov cx,0
mov dh,0
again:add cx,1
add bx,1
mov dl,ds:[bx-1]
push dx
cmp dl,0
jne again
paste:mov si,cx
pop dx
mov ds:[bp+si-1],dl
loop paste
ret
copy endp
start:
mov ax,data
mov ds,ax
mov bx,offset STRING1
mov bp,offset STRING2
call copy
mov ax,4c00h
int 21h
code ends
end start
复制前
复制后