|
主题 : : 实验9,...大家请看看,怎样再精减代码 [待解决] |
回复[ 10次 ]
点击[ 506次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2008-09-01 18:16 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-08-29 16:35 |
assume cs:code
data segment
db 'welcome to masm!'
dw 0b54h,0b80h,0bach
db 02h,24h,71h
data ends
stack segment
dw 0,0,0
stack ends
code segment
start:mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
mov sp,6
mov ax,0b800h
mov es,ax
mov di,0
mov cx,3
s0: push cx ;mov ss:[0],cx
mov bx,16[di]
mov dl,22[si]
push di ;mov ss:[2],di
push si ;mov ss:[4],si
mov di,0
mov si,0
mov cx,16
s1: mov al,[si]
mov es:[bx][di],al
mov es:[bx][di+1],dl
inc si
add di,2
loop s1
pop si ;mov si,ss:[4]
inc si
pop di ;mov di,ss:[2]
add di,2
pop cx ;mov cx,ss:[0]
loop s0
mov ax,4c00h
int 21h
code ends
end start | | |
|
|
|
|
[第1楼]
[ 回复时间:2008-10-15 17:43 ]
[引用]
[回复]
[ top ] | |
荣誉值:472
信誉值:12
注册日期:2007-10-16 15:34 |
|
|
|
|
|
[第2楼]
[ 回复时间:2008-10-20 20:42 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-09-03 12:36 |
楼主 push di ;mov ss:[2],di 这样也可以接着用?到这章为止好像没见书上有出现过
下面是我写的,笨是笨了点,呵呵
assume cs:codesg
data segment
db 'welcome to masm!'
codesg segment
start : mov ax,data
mov ds,ax
mov ax,0B800h
mov es,ax
mov bx,0
mov si,0
mov cx,16
mov ax,0
mov bp,7C0h
s : mov al,ds:[bx]
mov es:[bp+si],al
mov es:[bp+160+si],al
mov es:[bp+320+si],al
mov byte ptr es:[bp+1+si],02h
mov byte ptr es:[bp+160+1+si],24h
mov byte ptr es:[bp+320+1+si],0CAh
inc bx
add si,2
loop s
mov ax,4c00h
int 21h
codesg ends
end start | | |
|
|
|
|
[第3楼]
[ 回复时间:2008-10-20 20:58 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-09-03 12:36 |
其实这个题出的很不确定,在屏幕中间分别显示绿色、绿底红色、白底蓝色的字符串‘welcome to masm!’。这个是中间,是指在一行上呢,还是分三行中间显示。。。。。 | | |
|
|
|
|
[第4楼]
[ 回复时间:2008-11-05 19:01 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-09-21 15:29 |
assume cs:code,ds:data
data segment
db 'welcome to masm!'
data ends
code segment
start: mov ax,data
mov ds,ax
mov ax,0b800h
mov es,ax
mov bx,0
mov si,0
mov di,64
mov al,12
mov dl,160
mul dl
add di,ax
mov cx,16
s: mov al,[si]
mov ah,0
mov es:[di],al
mov byte ptr es:[di+1],2
mov es:[di+160],al
mov byte ptr es:[di+160+1],00100100B
mov es:[di+320],al
mov byte ptr es:[di+320+1],01110001B
mov byte ptr es:[di+480+1],10001000B
inc si
add di,2
loop s
mov ax,4c00h
int 21h
code ends
end start | | |
|
|
|
|
[第5楼]
[ 回复时间:2008-11-06 18:56 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-10-11 14:44 |
assume cs:code,ds:data
Data segment
DB 'welcome to masm!'
Data ends
code segment
start : mov ax,data
mov ds,ax
mov ES,0B800H
mov di,08h
mov bx,0
mov cx,16
go: mov ax,[bx]
mov es:[di+bx],ax
mov word ptr es:[di+bx+1],0002H
mov es:[di+bx+160],AX
mov word ptr es:[di+bx+161],0024H
mov es:[di+bx+320],ax
mov word ptr es:[di+bx+321],0071H
add bx,2
loop go
mov ax,4c00h
int 21h
code ends
end start | | |
|
|
|
|
[第6楼]
[ 回复时间:2008-11-06 19:31 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-10-11 14:44 |
改了下
代码比较简洁
assume cs:code,ds:data
data segment
DB 'welcome to masm!'
data ends
code segment
start: mov ax,data
mov ds,ax
mov ax,0B8A0H
mov ES,ax
mov di,60h
mov si,0 ;用于指向字符串
mov bx,0
mov cx,16
go: mov al,[si]
mov es:[di+bx],al
mov byte ptr es:[di+bx+1],82H
mov es:[di+bx+160],al
mov byte ptr es:[di+bx+161],24H
mov es:[di+bx+320],al
mov byte ptr es:[di+bx+321],71H
add bx,2
add si,1
loop go
mov ax,4c00h
int 21h
code ends
end start | | |
|
|
|
|
[第7楼]
[ 回复时间:2008-11-06 23:30 ]
[引用]
[回复]
[ top ] | |
荣誉值:35
信誉值:44
注册日期:2008-09-03 21:36 |
|
|
|
|
|
[第8楼]
[ 回复时间:2008-11-24 12:03 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-11-24 11:22 |
大家帮忙看看我的错在哪?
assume cs:code ,ds:data
data segment
db 'A'
db 'B'
db 'C'
db 'D'
db 'E'
db 'F'
data ends
code segment
start:mov ax,data
mov ds,ax
mov di,0
mov bx,0b800h
mov es,bx
mov si,0
mov ah,0cah
mov cx,6
next:mov al,[di]
mov es:[si],ax
add si,2
inc di
loop next
mov ax,4c00h
int 21h
code ends
end start | | |
|
|
|
|
[第9楼]
[ 回复时间:2008-12-01 14:28 ]
[引用]
[回复]
[ top ] | |
荣誉值:12
信誉值:0
注册日期:2008-11-24 18:10 |
assume cs:code
data segment
db 'welcome to masm!'
data ends
code segment
start: mov ax,data
mov ds,ax
mov ax,0b800h
mov es,ax
mov bx,0
mov si,0
mov di,0
mov cx,16
s: mov al,[si]
mov es:[di].64,al ;绿色
mov byte ptr es:[di+1].64,02h
mov es:[di+160].64,al
mov byte ptr es:[di+160+1].64,24h ;绿底红色
mov es:[di+320].64,al
mov byte ptr es:[di+320+1].64,71h ;白底蓝色
inc si
add di,2
loop s
mov ax,4c00h
int 21h
code ends | | |
|
|
|
|
[第10楼]
[ 回复时间:2008-12-01 14:31 ]
[引用]
[回复]
[ top ] | |
荣誉值:12
信誉值:0
注册日期:2008-11-24 18:10 |
上面的代码中bx没用到 忘记珊了,还有结尾少了句 end start :-D | | |
|