. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  实验9,...大家请看看,怎样再精减代码  [待解决] 回复[ 10次 ]   点击[ 506次 ]  
p4ti5
[帖 主]   [ 发表时间: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
mouse
[第1楼]   [ 回复时间:2008-10-15 17:43 ]   [引用]   [回复]   [ top ] 
荣誉值:472
信誉值:12
注册日期:2007-10-16 15:34
写的不错 ^_^
sexion
[第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
sexion
[第3楼]   [ 回复时间:2008-10-20 20:58 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-09-03 12:36
其实这个题出的很不确定,在屏幕中间分别显示绿色、绿底红色、白底蓝色的字符串‘welcome to masm!’。这个是中间,是指在一行上呢,还是分三行中间显示。。。。。
anly2782
[第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
hzmslx
[第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
hzmslx
[第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
zcouyangpeng
[第7楼]   [ 回复时间:2008-11-06 23:30 ]   [引用]   [回复]   [ top ] 
荣誉值:35
信誉值:44
注册日期:2008-09-03 21:36
高手真多  看来我还的加油
dongzhichen
[第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
yinxd6112
[第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
yinxd6112
[第10楼]   [ 回复时间:2008-12-01 14:31 ]   [引用]   [回复]   [ top ] 
荣誉值:12
信誉值:0
注册日期:2008-11-24 18:10
上面的代码中bx没用到 忘记珊了,还有结尾少了句  end start    :-D
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved