- Assembly code
assume cs:codedata segment db 'Welcome to Masm!';要显示的文字data endscode segment start:mov ax, 0B800h mov es, ax mov bx, 0 mov ax, data mov ds, ax s:call cls;循环显示 mov bp, 0 mov di, 0 mov cx, 16 s1:mov al, [bp];显示文字 mov es:[bx+di],al mov al, 202 mov es:[bx+di+1],al inc bp add di, 2 loop s1 add bx, 2 mov cx, bx sub cx, 3968 jcxz s3 jmp far ptr s mov ax, 4c00h int 21h s3:mov bx, 0 jmp s cls:push cx;清理屏幕 push ax push bx push ds mov ax, 0B800h mov ds, ax mov bx, 0 mov cx, 1999 sn:mov al, 32 mov [bx], al mov al, 7 mov 1[bx], al add bx, 2 loop sn pop ds pop bx pop ax pop cx retcode endsend start
以上是王爽汇编语言实验9代码的扩展,我在原题的基础上将其改成了在屏幕上滚动显示,但是效果不理想,主要原因是不知道怎么加延时,而且在没有延时的情况下跑出来的效果和我想象的极快速的在屏幕上滚动的效果也不一致,请指点,谢谢。
------解决方案--------------------------------------------------------
延迟加 NOP 空循环
------解决方案--------------------------------------------------------
在第十五章有一个延迟程序。
------解决方案--------------------------------------------------------
屏幕最后的一部分没有显示