分析:
这个程序用到了这章大部分知识,请仔细阅读本章内容。还有用到了上一个实验的知识点。
如果你了解了以上两点,这道题目将很容易就敲出来了。
需要知识点:(书上都有)
1、行和列的计算和颜色的了解
2、jcxz的用法
3、call和ret的用法
4、怎样判断0
assume cs:code data segment db 'Welcome to masm!',0 data ends code segment start: mov dh,8 mov dl,3 mov cl,2 mov ax,data mov ds,ax mov si,0 call show_str mov ax,4c00h int 21h show_str: ;其实这是一个子程序,里面是包含s和ok的,这样理解容易些 mov al,160 mul dh mov bx,ax mov al,2 mul dl add bx,ax ;计算出行和列加起来的偏移量 mov ax,0B800h mov es,ax ;es:[bx]为要输入的显示区 mov al,cl ;先将cl中的颜色数值显示出来 mov ch,0 ;ch前半段要为0,因为用不上,避免判断0s s: ;判断是否为0,否就输入到显示区 mov cl,[si] jcxz ok mov es:[bx],cl mov es:[bx+1],al add bx,2 inc si jmp short s ok: ;返回 ret code ends end start