
王爽汇编语言 实验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 展开
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 展开
1个回答
展开全部
大概看了下, 子程序设计中一般都会 在入口处保护寄存器,将用到的非参数寄存器存在栈中, 在子程序结束时再弹出来,以恢复原先的值。 这是为了让子程序的运行不影响到子程序外的其它代码。 比如这里,子程序入口处有之push cx push si 所以子程序结束会有对应的 pop si pop cx .你可以去多了解下子程序设计相关知识
追问
功能我当然知道,这个去掉并不影响最后结果
就是说这个是多余的
追答
这里当然是不会影响的啊, 因为子程序调用后,没有用到cx 和si . 但是如果子程序执行结束后还要使用cx 和 si呢, 那么不保存cx和si就可能出错。
子程序的目的就是为了模块化, 要想模块化必须降低模块间的耦合度。简单来说就是要子程序除了参数外,不影响外部程序。

2023-06-12 广告
单片机编程是指使用单片机编程语言,如C语言,来编写单片机的程序代码,以控制单片机的行为。这种技术在电子工程、计算机科学和电子通信等领域中被广泛应用。单片机编程的主要任务是设计和实现单片机的程序,包括定义单片机的指令系统、编写程序代码、处理器...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询