汇编语言中的子程序调用
原创
©著作权归作者所有:来自51CTO博客作者用心学习的原创作品,如需转载,请与作者联系,否则将追究法律责任
设计一个子程序,完成统计一组数字中的正数和0的个数
DATA SEGMENT
ARR DW -123,456,67,0,-34,-90,89,67,0,256
ZER DW ?
PLUS DW ?
DATA ENDS
CODE SEGMENT
ASSUME DS:DATA,CS:CODE
START:MOV AX, DATA
MOV DS , AX ;初始化DS
MOV SI , OFFSET ARR ;数组首地址送SI
MOV CX , CN ;数组元素个数送CX
CALL PZN ;调用近过程PZN
MOV ZER , BX ;0的个数送ZER
MOV PLUS , AX ;正数的个数送PLUS
INT 21H
;子程序名,PZN
;子程序功能:统计一组数据中正数和0的个数
;入口参数:数组首地址在SI中,数组个数在CX中
;出口参数:正数个数在AX中,0的个数在BX中
;使用寄存器:AX,BX,CX,DX,SI及PSW
PZN PROC NEAR
PUSH SI
PUSH DX ;保护现场
PUSH CX
XOR AX , AX
XOR BX , BX ;计数单元清0
PZN0: MOV DX, [SI] ;取第一个数组元素送DX
CMP DX , 0 ;DX中的内容和0比较
JL PZN1 ;小于0转到PZN1
JZ ZN ;等于0,转到ZN
INC AX ;否则 为正数,AX中内容加1
JMP PZN1
ZN: INC BX ;为0,BX中内容加1
PZN1 : ADD SI, 2 ;数组指针加2调整
LOOP PZN0 ;循环控制
POP CX
POP DX
POP SI ;保护现场
RET ;返回主程序
PZN ENDP ;子程序定义结束
CODE ENDS ;代码段结束
END START ;程序结束
下一篇:变化
![](https://ucenter.51cto.com/images/noavatar_middle.gif)
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
《汇编语言》总结03 —— 包含多个段的程序
包含多个段的程序
寄存器 操作系统 源程序