因为之前学过了c语言,所以在设计程序的时候比较喜欢把程序写成面向过程的程序。所以回过头做实验九的时候,利用子程序的思想,让welcome to masm显示3种颜色。由于我太注重程序结构问题,所以该程序可能感觉稍长,但是程序结构很清晰。现在把发出来,希望和大家一起讨论。
assume cs:code
stack segment
dw 8 dup(0)
db 'welcom to masm! '
stack ends
code segment
main: mov ax,stack ;主函数入口
mov ss,ax
mov sp,10h
;以下是调用3个子程序,显示3种不同颜色的字符
call display1 ;调用子程序1
call display2 ;调用子程序2
call display3 ;调用子程序3
mov ax,4c00H
int 21h
display1:call pub ;子程序1
begin: mov byte ptr es:[di+1],10001010b
mov dl,[si]
mov es:[di],dl
add di,2
inc si
loop begin
ret
display2:call pub ;子程序2
add di,160h
begin2: mov byte ptr es:[di+1],01001010b
mov dl,[si]
mov es:[di],dl
inc si
add di,2
loop begin2
ret
display3:call pub ;子程序3
add di,320h
begin3: mov byte ptr es:[di+1],01111001b
mov dl,[si]
mov es:[di],dl
inc si
add di,2
loop begin3
ret
pub: mov ax,stack ;由于每个程序都需要设置相关寄存器,所以把该模块做成
mov ds,ax ;子程序,方便复用。但是这也是使这个程序效率变低的一点
mov si,10h ;这个地方应该可以做做优化,请高手指点
mov ax,0b800H
mov es,ax
mov di,5daH
mov cx,16
ret
code ends
end main |