|
主题 : : 【实验九详解】 [已解决] |
回复[ 6次 ]
点击[ 1316次 ] | |
|
|
|
|
[帖 主] [ 发表时间:2010-07-25 12:44 ] | |
荣誉值:268
信誉值:12
注册日期:2010-06-18 22:19 |
这个实现方法是用一个循环逐列显示字符。
;--------------------------------------------------------------------------------------
assume cs:code
data segment
db 'Welcome to Masm!'
data ends
code segment
start:
mov ax,data ;装入DS
mov ds,ax
mov ax,0b800h ;指定显示区域DS
mov es,ax
mov bx,0 ;首地址
mov bp,60 ;列的初始值
mov cx,16 ;16次循环
s: mov si,12*160 ;行的初始值
mov ah,72h ;指定颜色
mov al,[bx] ;装入ASCII字符
mov es:[si+bp],ax ;把白底绿字装入指定位置
add si,160 ;指向下一行
mov ah,24h ;指定颜色
mov al,[bx] ;装入ASCII字符
mov es:[si+bp],ax ;将绿底红字装入指定位置
add si,160 ;指向下一行
mov ah,17h ;指定颜色
mov al,[bx] ;装入ASCII字符
mov es:[si+bp],ax ;把白底蓝字装入指定位置
inc bx ;指向下一个字符
add bp,2 ;指向下一列位置
loop s
mov ah,4ch
int 21h
code ends
end start
;-------------------------------------------------------------------------------------- | | |
|
|
|
|
[第4楼] [ 回复时间:2010-07-28 21:35 ] | |
荣誉值:5
信誉值:0
注册日期:2009-09-24 17:56 |
我这样做不知对不对
;程序功能:在内存地址B8000H - B8FFFFH共32KB的空间显示字符串
assume cs:code , ss:stack
stack segment
db 'welcome to masm!'
stack ends
code segment
start: mov ax,stack
mov es,ax
mov ax,0b800h
mov ds,ax
mov bx,820H
mov di,0
mov cx,10h
s: mov al,es:[di]
mov ah,00000010b;
mov ds:72[bx],ax
mov ah,00100100b
mov ds:232[bx],ax
mov ah,01110001b
mov ds:392[bx],ax
add bx,2
add di,1
loop s
mov ax ,4c00h
int 21h
code ends
end start | | |
|