|
主题 : : 实验9,根据材料编程 [待解决] |
回复[ 7次 ]
点击[ 462次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2009-05-21 22:51 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-05-13 22:27 |
;花了不少时间,终于做出来了。贴出来跟大家分享一下. (汇编还是蛮好玩的^_^)
;每行为80个字符.即160个字节.共25行要写三行,共有22个空行.即前面空11行
;160字节*11行=1760个字节
;"welcome to masm"字符串共15字符30个字节
;属性15个字符30个字节
assume cs:code
;先将要填充的数据定义好,然后将其复制到目标内存中即可.
data segment
;160字节*11行+30字符+30字节=1760+60字节=1820字节
db 1820 dup(0)
db 'w',2,'e',2,'l',2,'c',2,'o',2,'m',2,'e',2,0,2,'t',2,'o',2,32,0,'m',2,'a',2,'s',2,'m',2
;160字节-30字节=130字节
db 130 dup(0)
db 'w',44,'e',44,'l',44,'c',44,'o',44,'m',44,'e',44,0,44,'t',44,'o',44,0,44,'m',44,'a',44,'s',44,'m',44
db 130 dup(0)
db 'w',71,'e',71,'l',71,'c',71,'o',71,'m',71,'e',71,0,71,'t',71,'o',71,0,71,'m',71,'a',71,'s',71,'m',71
;后面补0填满一屏
db 3000 dup(0)
data ends
code segment
start: mov ax,0B800H
mov es,ax
mov ax,data
mov ds,ax
mov bx,0
;4000不是一个很精确的数字,但是足以填满一屏
mov cx,4000
s: mov al,[bx]
mov es:[bx],al
inc bx
loop s
mov ax,4c00H
int 21H
code ends
end start | | |
|
|
|
|
[第1楼]
[ 回复时间:2009-05-22 14:48 ]
[引用]
[回复]
[ top ] | |
荣誉值:56
信誉值:0
注册日期:2008-01-19 14:51 |
显示三次 同样的字符串,只是颜色不同了,你这程序可以再”精致“一点 :) | | |
|
|
|
|
[第2楼]
[ 回复时间:2009-05-23 15:21 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-05-13 22:27 |
|
|
|
|
|
[第3楼]
[ 回复时间:2009-05-23 15:33 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-05-14 14:04 |
|
|
|
|
|
[第4楼]
[ 回复时间:2011-09-05 16:49 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-09-05 09:58 |
|
|
|
|
|
[第5楼]
[ 回复时间:2011-09-05 17:29 ]
[引用]
[回复]
[ top ] | |
荣誉值:118
信誉值:0
注册日期:2011-07-07 22:59 |
|
|
|
|
|
[第6楼]
[ 回复时间:2011-09-20 17:39 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-08-20 08:45 |
|
|
|
|
|
[第7楼]
[ 回复时间:2011-10-01 17:43 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-09-11 00:23 |
assume cs:codesg, ds:datasg, ss:stack
datasg segment
db 'welcome to masm!'
db 02h,24h,71h
datasg ends
stack segment
dw 8 dup(0)
stack ends
codesg segment
start: mov ax,datasg
mov ds,ax
mov ax,stack
mov ss,ax
mov sp,10h
mov bx,0
mov ax,0b872h
mov es,ax
mov cx,3
mov si,16
s0: push cx
push si
mov si,0
mov di,0
mov cx,16
s1: mov al,[si]
mov es:[bx+di],al
add si,1
add di,2
loop s1
mov di,1
mov cx,16
pop si
s2: mov al,[si]
mov es:[bx+di],al
add di,2
loop s2
pop cx
add bx,160
add si,1
loop s0
mov ax,004ch
int 21h
codesg ends
end start
小弟花了2天时间写的。。。
有不对的地方往指教。 | | |
|