|
主题 : : 终于把实验9给弄出来了 [待解决] |
回复[ 2次 ]
点击[ 339次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2011-04-09 23:37 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-02-22 10:32 |
assume cs:codesg
data segment
db 'welcome to masm!'
data ends
codesg segment
start:
mov ax,data
mov ds,ax
mov ax,0B800h
mov es,ax
mov cx,16
mov si,40h
mov dx,0
s:mov al,[bx]
mov es:[si+6e0h],al
mov es:[si+780h],al
mov es:[si+820h],al
inc si
mov al, 00000010b
mov es:[si+6e0h],al
mov al, 00100100b
mov es:[si+780h],al
mov al,01110001b
mov es:[si+820h],al
inc si
inc bx
loop s
mov ax,4c00h
int 21h
codesg ends
end start
1:mov ax,0B800h
忘记b前面加0 好崩溃
2绿色:00000010b
绿底红色:00100100b
白底蓝色:01110001b
3:显示:直接在debug中用g命令 | | |
|
|
|
|
[第1楼]
[ 回复时间:2011-04-13 11:02 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-01-18 13:14 |
|
|
|
|
|
[第2楼]
[ 回复时间:2011-04-14 14:46 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-02-28 19:27 |
我一开始以为要用jmp,就往jmp上靠,结果搞得无比复杂,后来才想起来定义数据段,囧。。。而且我还没定义字符串。。。下面是我的写法,用了两个循环:
assume cs:code
data segment
db 77H,65H,6CH,63H,6FH,6DH,65H,20H,74H,6FH,20H,6DH,61H,73H,6DH,21H,02H,24H,71H ;最后3个定义的是字符属性
data ends
code segment
start: mov ax,0B800H
mov ds,ax
mov ax,data
mov es,ax
mov bx,0BE0H ;这边的两个距离0BE0和46是我大概估算的,呵呵
mov si,46
mov cx,3 ;大循环3次
mov di,16 ;定义字符属性所在的位置
s0: mov dx,cx ;存入大循环数
mov cx,16 ;小循环16次
mov bp,0
s: mov al,es:[bp]
mov ds:[bx+si],al ;放入字符
mov al,es:[di]
mov ds:[bx+si+1],al ;放入字符属性
add bx,2
add bp,1
loop s
inc di ;指向下一个字符属性
sub bx,32 ;回退‘welcome to masm!’这句话的长度
add bx,0A0H ;向下一行
mov cx,dx ;取出大循环数
loop s0
mov ax,4c00H
int 21H
code ends
end start | | |
|