本文主要是介绍汇编语言的模块化程序设计(1004),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
本文为《汇编语言程序设计》1004小节例程。点击链接…进课程主页。
模块化程序结构
assume cs:code
code segment
main: ...call sub1 ;调用子程序sub1...mov ax, 4c00hint 21hsub1: ... ;子程序sub1开始call sub2 ;调用子程序sub1...ret ;子程序返回sub2: ... ;子程序sub2开始...ret ;子程序返回
code ends
end main
用寄存器来存储参数和结果
;计算data段中第一组数据的 3 次方,结果保存在后面一组dword单元中。
assume cs:code
data segment
dw 1,2,3,4,5,6,7,8
dd 0,0,0,0,0,0,0,0
data endscode segmentstart:mov ax,datamov ds,axmov si,0 ;ds:si指向第一组word单元mov di,16 ;ds:di指向第二组dword单元mov cx,8s:mov bx,[si]call cubemov [di],axmov [di].2,dxadd si,2 ;ds:si指向下一个word单元add di,4 ;ds:di指向下一个dword单元loop smov ax,4c00hint 21hcube:mov ax,bxmul bxmul bxret
code ends
end start
用内存单元批量传递数据
;将data段中的字符串转化为大写
assume cs:code
data segmentdb 'conversation'
data endscode segment
start: mov ax,datamov ds,axmov si,0mov cx,12 call capitalmov ax,4c00hint 21h
capital: and byte ptr [si],11011111binc siloop capitalret
code ends
end start
用栈传递参数
;设 a = 3 、b = 1 ,计算:( a – b ) ^ 3
assume cs:code
code segment
start: mov ax , 1push axmov ax , 3push ax ;注意参数压栈的顺序call difcubemov ax,4c00hint 21h
difcube : push bpmov bp , spmov ax , [ bp + 4 ] ; 将栈中a的值送入ax 中sub ax , [ bp + 6 ] ; 减栈中b的值mov bp , axmul bpmul bppop bpret 4
code ends
end start
这篇关于汇编语言的模块化程序设计(1004)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!