|
主题 : : 实验9,我用30行代码完成! [待解决] |
回复[ 2次 ]
点击[ 319次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2010-05-09 19:50 ]
[引用]
[回复]
[ top ] | |
荣誉值:4
信誉值:4
注册日期:2009-07-29 23:59 |
assume cs:dm,ds:sj
sj segment
db 'welcome to masm!'
sj ends
dm segment
yk:mov ax,sj
mov ds,ax
mov ax,0b800h
mov es,ax ;设置屏幕显示区的段地址
mov di,0
mov bx,0
mov si,0
mov cx,16
s:mov al,[di] ;将字符送入寄器AL中
mov byte ptr es:[bx+si+1984],al ;将字符在屏幕的第12行的中间位置显示
mov byte ptr es:[bx+si+1985],02h ;设置字符显示为绿色
add bx,0a0h ;换行设置
mov byte ptr es:[bx+si+1984],al ;将字符在屏幕的第13行的中间位置显示
mov byte ptr es:[bx+si+1985],24h ;设置字符显示为绿底红字字符
add bx,0a0h ;换行设置
mov byte ptr es:[bx+si+1984],al ;将字符在屏幕的第14行的中间位置显示
mov byte ptr es:[bx+si+1985],71h ;设置字符显示为白底蓝字字符
mov bx,0 ;设置行位倒回第12行
add si,2 ;设置要显示在屏幕中间的下一个字符的偏移地址
inc di ;设置要读取下一个字符的偏移地址
loop s
mov ax,4c00h
int 21h
dm ends
end yk | | |
|
|
|
|
[第1楼]
[ 回复时间:2010-05-09 20:10 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-12-01 09:12 |
好吧,我的代码修改了一天,修改出了只有29行的代码,请看:
assume cs:codesg,ds:data
data segment ;段地址为0B800h,偏移地址7c0h
db 'welcome to masm!' ;16个字节
data ends
codesg segment
start: mov ax,data
mov ds,ax
mov bx,0h
mov si,0h
mov ax,0b800h
mov es,ax ;直接将段地址0b800h放进es
mov cx,16
s: mov al,[bx]
mov es:[7c0h+si],al ;显示第一行字符串
mov es:[860h+si],al ;显示第二行字符串
mov es:[900h+si],al ;显示第三行字符串
mov al,2h ;绿色
mov es:[7c1h+si],al ;设置第一行字符串颜色
mov al,24h ;绿底红色
mov es:[861h+si],al ;设置第二行字符串颜色
mov al,71h ;白底蓝色
mov es:[901h+si],al ;设置第三行字符串颜色
add si,2h
add bx,1h
loop s
mov ax,4c00h
int 21h
codesg ends
end start | | |
|
|
|
|
[第2楼]
[ 回复时间:2024-02-18 13:23 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2023-10-04 20:30 |
|
|