王爽汇编语言 实验10的问题 10

王爽三版,汇编语言,要在8行三列用绿色显示字符串,别的都没什么问题.就是不明白后面POPCX,POPSI有什么用,程序都执行完了,再POP有什么必要呢.assumecs:... 王爽三版,汇编语言,要在8行三列用绿色显示字符串,别的都没什么问题.就是不明白后面POP CX,POP SI有什么用,程序都执行完了,再POP有什么必要呢.
assume cs:code
data segment
db 'wel come to asm',0
data ends

code segment
start:mov dh,7
mov dl,3
mov cl,2
mov si,0 ;
mov ax,data
mov ds,ax
call show_str
mov ax,4c00h
int 21h

show_str:
push cx
push si
mov al,0a0h
mul dh
mov bx,ax
mov al,2
mul dl
sub ax,2
add bx,ax

mov ax,0b800h
mov es,ax
mov di,0 ;

mov al,cl;
mov ch,0

s:mov cl,ds:[si]
jcxz OK
mov es:[bx+di],cl
mov es:[bx+di+1])
inc si
add di,2 ;
jmp short s ;

OK:pop si;
pop cx

ret
code ends
end start
展开
 我来答
百度网友5165b85
2016-07-07 · TA获得超过859个赞
知道小有建树答主
回答量:210
采纳率:0%
帮助的人:245万
展开全部
大概看了下, 子程序设计中一般都会 在入口处保护寄存器,将用到的非参数寄存器存在栈中, 在子程序结束时再弹出来,以恢复原先的值。 这是为了让子程序的运行不影响到子程序外的其它代码。 比如这里,子程序入口处有之push cx push si 所以子程序结束会有对应的 pop si pop cx .你可以去多了解下子程序设计相关知识
追问
功能我当然知道,这个去掉并不影响最后结果
就是说这个是多余的
追答
这里当然是不会影响的啊, 因为子程序调用后,没有用到cx 和si .  但是如果子程序执行结束后还要使用cx 和 si呢, 那么不保存cx和si就可能出错。    
子程序的目的就是为了模块化, 要想模块化必须降低模块间的耦合度。简单来说就是要子程序除了参数外,不影响外部程序。
意法半导体(中国)投资有限公司
2023-06-12 广告
单片机编程是指使用单片机编程语言,如C语言,来编写单片机的程序代码,以控制单片机的行为。这种技术在电子工程、计算机科学和电子通信等领域中被广泛应用。单片机编程的主要任务是设计和实现单片机的程序,包括定义单片机的指令系统、编写程序代码、处理器... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式