鱼C论坛

 找回密码
 立即注册
查看: 1828|回复: 7

[汇编作业] 课程设计一

[复制链接]
发表于 2014-9-6 14:50:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
assume cs:code,ss:stack,ds:data

data segment
dd 1975,1976,1977,1978,1979,1980,1981,1982,1983
dd 1984,1985,1986,1987,1988,1989,1990,1991,1992
dd 1993,1994,1995
 
dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000

dd 3,7,9,13,28,38,130,220,476,778,1101,1442,2258,2793,4037,5635,8226
dd 11542,14430,15257,17800

dd 32 dup (0)

data ends


stack segment
dw 32 dup(0)
stack ends



code segment

start:    

            mov ax,data
                        mov ds,ax
                        mov ax,stack
                        mov ss,ax
                        mov sp,64
                        
                        
                        mov bx,0
                        mov si,84
                        
                        
                        
                        
                        
                    mov cx,21    ;13
                
kaa:   
                push cx      ;
                        
              
                        
                       mov ax,[bx]
                        push ax
                        mov ax,[bx+2]    ; 1a
                        push ax
                        
                        pop dx
                        pop ax           ;
                        call dtoc        ;20
                        
                        
                        
                        mov byte ptr ds:[256],2    ;23
                        
            mov dh,ds:[256]             ;显示年份
                        mov dl,2
                        mov cx,2
                        
                        call sss     ;31
                                          ;显示年份

                        
                        
                           
                                           ;收入
                        
                        
                
                       mov ax,[bx+si]           ;34
                        push ax
                        mov ax,[bx+si+2]
                        push ax
                        pop dx
                        pop ax
                        call dtoc        ;3d
                        
                        
                        
                        
                        
                        mov dh,ds:[256]        ;40         ;显示收入
                        mov dl,7
                        mov cx,2
                                                
                
                        
                        call sss                ;49
                        
                                          ;显示收入
                        
                        
                        
                        
                                       ;人数
                        
                        
                        mov ax,[bx+si+84]        ;4c
                        push ax
                        mov ax,[bx+si+86]
                        push ax
                        pop dx
                        pop ax
                        call dtoc                ;56
                        
                   
                        
                        
                        mov dh,ds:[256]         ;59   ;显示人数
                        mov dl,15
                        mov cx,2
                
                        
                        call sss            ;62
                        
                                        ;显示人数
                        
                        
                        
                        
                                            
                        mov ax,[bx+si]     ;68     ;准备收入(被除数);69
                        push ax              ;高16位
                        mov ax,[bx+si+2]    ;68
                        push ax             ; 低16位
                        
                                                                      
                       mov ax,[bx+si+84]     ;6c     ;准备除数(人数)
                        push ax
                        
                        pop cx             ;  ;准备除平均
                        pop dx
                        pop ax             ;6a

                        
                        
                        call divdw      ;73     ;作除法
                        
                        
                        
                        
                        
                        call dtoc            ;76
                        
            
            mov dh,2          ;显示平均数
                        mov dl,20
                        mov cx,2
                        
                   
                        call sss                ;80
                                         
                        
                        
                
                        

                        
            inc dh
                        add bx,4                         ;85
                        
                        
            mov cl,ds:[256]    ;88
                        inc cl
                        mov ds:[256],cl
                        
                        
                        pop cx
                        
                        
                   
                        
                        loop kaa          ;93
                        
                        
                        
                        
                        
                        
                        
                         
                         
                         
        jx:                mov ax,4c00h     ;95
                        int 21h           ;86
                        
                        
                        

                                        
                        
                        
                        
                         
                         
                
                 
dtoc:                        ;抽取数字,并转化为SACII码

                 push dx
                 push cx
                                 push ax
                                 push si
                                 push bx
                


                  
                  mov bx,0        ;bx在子程序中用来存放位数,用栈来临时存放修改后的字符
                  
           s1:    mov cx,10
                                  
                  
                                  call divdw      ;a6
                                  mov di,cx                 ;把余数给di临时保存
                                  mov cx,ax       ;商给CX,用来判断商是否为零; a4
                                  
                         
                  jcxz s2       ;如果CX=0则跳到S1
                                  
                                  mov cx,di      ;恢复CX内值
                 
                  
                  add cx,30h      ;余数加30H,得到相应的ASCII码 ,b1
                                  push cx         ;保存到栈
                  inc bx          ;
                  
                                  
                                  
                  jmp short s1     
                                  
                                  
           s2:    
                          mov cx,di        ;b8
                          add cx,30h       ;商为0时,余数为个位,ba
                          push cx           ;b6
                                  
                                  inc bx          ;be ;再进行一次栈操作,(补充当“商为零而余数不为零”时的情况)
                          
                                  mov cx,bx        ;用CX出栈,把总进栈次数给CX
                                  mov di,cx        ;本程序中,用来保存长度
                                  mov si,257      ;c3
                                  mov ds:[si],cl
                                  
                   s3:          
                          pop ax            ;
                          
                                  mov ds:[si+1],al
                                  inc si            ;
                                  
                                  loop s3            ;cd
                                  
                                  
                                  
                                  
                 
                                                 ;s3实现将栈中的数据依次出栈,放到指定内存
                          
                
                  pop bx     ;cf ;bx压进去对,取出来就不对了??
                      pop si            ;
                               pop ax           
                                  pop cx
                                  pop dx


ret                    ;  d4
              
                   

                   
sss:                  ;子程序 用来显示
            push bx
                        push si
                        push dx
                        
                                                
            mov ax,cx          ;颜色给ax
            mov cl,ds:[257]        ;d9    ds:{256]中的1怎么变成了4????
                        
        ss1a:   push cx          ;dd ;这里显示位置有问题!!!!
                        
                        
                mov si,257      ;d2
                        
                        call  show_str     ;在指定位置显示 ,d5
                        inc si             ;e4
                        inc dl
                        
                        pop cx        ;e7
                        
                        
                        
                        loop ss1a           ;e8
                        
                        pop dx
                        pop si
                        pop bx
                        
                        
                    ret                    ;e2
                
                   
                   







divdw:  ;参数:(ax)=dword型数据的低16位,(dx)=dword型数据的高16位,(cx)=除数  ,b6
        ;返回:(dx)=结果的高16位,(ax)=结果的低16位,(cx)=余数

                 push si        ;e4
                 push bx
                 
                 
         push ax        ;低16位先保存
                 mov ax,dx    ;ax这时候的值是高16位了
                 mov dx,0       ;dx置零是为了不影响下边余数位,使得高16位为0
                 
                 div cx          ;H/N(16位除法)
                 mov bx,ax       ;ax,bx的值为int(商)H/N,dx的值为rem(余数)
                   
                 
                 pop ax          ;ax的值现在是L(低16位)
                 div cx          ;L/N(16除法),ax被除数低16位,dx被除数高16位
                 
                 mov cx,dx
                 mov dx,bx
                 
                 pop bx
                 pop si
                 ret             ;107
                 
                 




                 

         
         
         
 show_str: ;在指定位置显示字符,dh=行号(0-24),dl=列号(0-79),cx=颜色
          ; ds:si指向字符串首地址
                  
         push cx      ;cc
         push si
                 
                 
                 
                 mov cx,ax      ;颜色给cx
                 
         mov ax,0b800h  ;显存的开始地址
                 mov es,ax     ;10b ;ES中存放是显存的第0页(共0-7页)的起始段地址
        
         mov al,160     ;每行80字符即160字节
         dec dh         ;第八行
                 mul dh         ;111
                 mov bx,ax
                 
                 mov al,2      ;一个字符占二字节
                 dec dl        ;列从零开始,第三列,所以减一
                 mul dl
                      
                 add bx,ax      ;此时BX中放的是行与列的偏移地址
                 mov di,0        ;di 指向显存的偏移地址
                 mov al,cl       ;把颜色参数,放到al;e6
                 
                 mov si,257
                 mov cx,0
                 mov cl,[si]      ;128
                 
                 mov si,258
                 
        str: 
             mov ah,ds:[si]   ;ds:[si]指向‘Wlcome to masm!',0,,,,e8
                
                 
        
                 mov es:[bx+si],ah   ;偶字节放字符
                 mov es:[bx+si+1],al  ;奇字节放,颜色属性
                 
                 inc si
                 loop str           ;137
                 
                 
                 
                 
        ok:         pop si
             pop cx
             
                 ret         ;显示字符串的子程序【定义结束】  ;13b
         
                  
                 
        code ends
end start
        
                 
课程设计一完成了,但运行没有显示,不知道做的对不对;
谁帮我运行下,看这个完成没有 :handshake



想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-9-6 14:59:05 | 显示全部楼层
上面的程序,把394行,换成:add si,2
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2014-9-6 15:48:49 | 显示全部楼层
最后改成这个样子,还是显示不出来;晕死了:mad:
assume cs:code,ss:stack,ds:data

data segment
dd 1975,1976,1977,1978,1979,1980,1981,1982,1983
dd 1984,1985,1986,1987,1988,1989,1990,1991,1992
dd 1993,1994,1995
 
dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000

dd 3,7,9,13,28,38,130,220,476,778,1101,1442,2258,2793,4037,5635,8226
dd 11542,14430,15257,17800

dd 32 dup (0)

data ends


stack segment
dw 32 dup(0)
stack ends



code segment

start:    

            mov ax,data
                        mov ds,ax
                        mov ax,stack
                        mov ss,ax
                        mov sp,64
                        
                        
                        mov bx,0
                        mov si,84
                        
                        
                        
                        
                        
                    mov cx,21    ;13
                
kaa:   
                push cx      ;
                        
              
                        
                       mov ax,[bx]
                        push ax
                        mov ax,[bx+2]    ; 1a
                        push ax
                        
                        pop dx
                        pop ax           ;
                        call dtoc        ;20
                        
                        
                        
                        mov byte ptr ds:[256],2    ;23
                        
            mov dh,ds:[256]             ;显示年份
                        mov dl,2
                        mov cx,2
                        
                        call sss     ;31
                                          ;显示年份

                        
                        
                        
                        
                
                       mov ax,[bx+si]           ;34
                        push ax
                        mov ax,[bx+si+2]
                        push ax
                        pop dx
                        pop ax
                        call dtoc        ;3d
                        
                        
                        
                        
                        
                        mov dh,ds:[256]        ;40         ;显示收入
                        mov dl,7
                        mov cx,2
                                                
                
                        
                        call sss                ;49
                        
                                         
                        
                        
                        mov ax,[bx+si+84]        ;4c
                        push ax
                        mov ax,[bx+si+86]
                        push ax
                        pop dx
                        pop ax
                        call dtoc                ;56
                        
                   
                        
                        
                        mov dh,ds:[256]         ;59   ;显示人数
                        mov dl,15
                        mov cx,2
                
                        
                        call sss            ;62
                        
                                        ;显示人数
                        
                        
                        
                        
                                            
                        mov ax,[bx+si]     ;68     ;准备收入(被除数);69
                        push ax              ;高16位
                        mov ax,[bx+si+2]    ;68
                        push ax             ; 低16位
                        
                                                                      
                       mov ax,[bx+si+84]     ;6c     ;准备除数(人数)
                        push ax
                        
                        pop cx             ;  ;准备除平均
                        pop dx
                        pop ax             ;6a

                        
                        
                        call divdw      ;73     ;作除法
                        
                        
                        
                        
                        call dtoc            ;76
                        
            
            mov dh,2          ;显示平均数
                        mov dl,20
                        mov cx,2
                        
                   
                        call sss                ;80
                                         
                        
                        
                
           
        
                        add byte ptr ds:[256],1                        ;83
                        
                        
          
                        
                        
                        pop cx
                        
                        dec cx            ;89
                        jcxz jx           ;
                        
                        jmp  kaa          ;8c
                        
                
                         
                         
        jx:                mov ax,4c00h     ;8e
                        int 21h           ;91
                        
                        
                        

                                        
                        
                        
                        
                         
                         
                
                 
dtoc:                        ;抽取数字,并转化为SACII码

                 push dx
                 push cx
                                 push ax
                                 push si
                                 push bx
                


                  
                  mov bx,0        ;bx在子程序中用来存放位数,用栈来临时存放修改后的字符
                  
           s1:    mov cx,10      ;9e
                                  
                  
                                  call divdw      ;a6
                                  mov di,cx                 ;把余数给di临时保存
                                  mov cx,ax       ;商给CX,用来判断商是否为零; a4
                                  
                         
                  jcxz s2       ;如果CX=0则跳到S1
                                  
                                  mov cx,di      ;恢复CX内值
                 
                  
                  add cx,30h      ;余数加30H,得到相应的ASCII码 ,a9
                                  push cx         ;保存到栈
                  inc bx          ;
                  
                                  
                                  
                  jmp short s1     
                                  
                                  
           s2:    
                          mov cx,di        ;b8
                          add cx,30h       ;商为0时,余数为个位,b2
                          push cx           ;b6
                                  
                                  inc bx          ;be ;再进行一次栈操作,(补充当“商为零而余数不为零”时的情况)
                          
                                  mov cx,bx        ;用CX出栈,把总进栈次数给CX
                                  mov di,cx        ;本程序中,用来保存长度
                                  mov si,257      ;bb
                                  mov ds:[si],cl  
                                  
                   s3:          
                          pop ax            ;
                          
                                  mov ds:[si+1],al
                                  inc si            ;
                                  
                                  loop s3            ;c5
                                  
                                  
                                  
                                  
                 
                                                 ;s3实现将栈中的数据依次出栈,放到指定内存
                          
                
                  pop bx     ;cf ;bx压进去对,取出来就不对了??
                      pop si            ;
                               pop ax           
                                  pop cx
                                  pop dx


ret                    ;  cc
              
                   

                   
sss:                  ;子程序 用来显示
            push bx
                        push si
                        push dx
                        
                                                
            mov ax,cx          ;颜色给ax
            mov cl,ds:[257]        ;d2    ds:{256]中的1怎么变成了4????
                        
        ss1a:   push cx          ;d6 ;这里显示位置有问题!!!!
                        
                        
                mov si,257      ;
                        
                        call  show_str     ;在指定位置显示 ,d5
                        inc si             ;dd
                        inc dl
                        
                        pop cx        ;e0
                        
                        
                        
                        loop ss1a           ;e1
                        
                        pop dx
                        pop si
                        pop bx
                        
                        
                    ret                    ;e6
                
                   
                   







divdw:  ;参数:(ax)=dword型数据的低16位,(dx)=dword型数据的高16位,(cx)=除数  ,b6
        ;返回:(dx)=结果的高16位,(ax)=结果的低16位,(cx)=余数

                 push si        ;e7
                 push bx
                 
                 
         push ax        ;低16位先保存
                 mov ax,dx    ;ax这时候的值是高16位了
                 mov dx,0       ;dx置零是为了不影响下边余数位,使得高16位为0
                 
                 div cx          ;H/N(16位除法)
                 mov bx,ax       ;ax,bx的值为int(商)H/N,dx的值为rem(余数)
                   
                 
                 pop ax          ;ax的值现在是L(低16位)
                 div cx          ;L/N(16除法),ax被除数低16位,dx被除数高16位
                 
                 mov cx,dx
                 mov dx,bx
                 
                 pop bx
                 pop si
                 ret             ;fc
                 
                 




                 

         
         
         
 show_str: ;在指定位置显示字符,dh=行号(0-24),dl=列号(0-79),cx=颜色
          ; ds:si指向字符串首地址
                  
         push cx      ;fd
         push si
                 
                 
                 
                 mov cx,ax      ;颜色给cx
                 
         mov ax,0b800h  ;显存的开始地址
                 mov es,ax     ;10b ;ES中存放是显存的第0页(共0-7页)的起始段地址
        
         mov al,160     ;每行80字符即160字节
         dec dh         ;第八行
                 mul dh         ;111
                 mov bx,ax
                 
                 mov al,2      ;一个字符占二字节
                 dec dl        ;列从零开始,第三列,所以减一
                 mul dl
                      
                 add bx,ax      ;此时BX中放的是行与列的偏移地址
                 mov di,0        ;di 指向显存的偏移地址
                 mov al,cl       ;把颜色参数,放到al;e6
                 
                 mov si,257        ;11b
                 mov cx,0
                 mov cl,[si]      ;
                 
                 mov si,258
                 
        str: 
             mov ah,ds:[si]   ;ds:[si]指向‘Wlcome to masm!',0,,,,e8
                
                 
        
                 mov es:[bx+si],ah   ;偶字节放字符
                 mov es:[bx+si+1],al  ;奇字节放,颜色属性
                 
                 add si,2
                 loop str           ;132
                 
                 
                 
                 
        ok:         pop si
             pop cx
             
                 ret         ;显示字符串的子程序【定义结束】  ;136
         
                  
                 
        code ends
end start
        
                 
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2014-9-6 15:57:54 | 显示全部楼层
把61行内容,改写到第34行!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2014-9-6 17:23:20 | 显示全部楼层
真心看不懂,我是小白的说 :mad:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2014-9-6 17:33:18 | 显示全部楼层
我终于把它写好了 :loveliness:   欢迎大家指导:big
assume cs:code,ss:stack,ds:data

data segment
dd 1975,1976,1977,1978,1979,1980,1981,1982,1983
dd 1984,1985,1986,1987,1988,1989,1990,1991,1992
dd 1993,1994,1995
 
dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000

dd 3,7,9,13,28,38,130,220,476,778,1101,1442,2258,2793,4037,5635,8226
dd 11542,14430,15257,17800

dd 32 dup (0)

data ends


stack segment
dw 32 dup(0)
stack ends



code segment

start:    

            mov ax,data
                        mov ds,ax
                        mov ax,stack
                        mov ss,ax
                        mov sp,64
                        
                        mov byte ptr ds:[272],5
                        
                        mov bx,0
                        mov si,84
                        
                        
                        
                        
                        
                    mov cx,21    ;13
                
kaa:   
                push cx      ;
                        
              
                        
                       mov ax,[bx]      ;1c
                        push ax
                        mov ax,[bx+2]    ; 
                        push ax
                        
                        pop dx
                        pop ax           ;
                        call dtoc        ;25
                        
                        
                        
            mov dh,ds:[272]     ;28         ;显示年份
                        mov dl,3
                        mov cx,2
                        
                        call show_str     ;31
                        
                        
                
                       mov ax,[bx+si]           ;34
                        push ax
                        mov ax,[bx+si+2]
                        push ax
                        pop dx
                        pop ax
                        call dtoc        ;3d
                        
                        
                        
                        
                        
                        mov dh,ds:[272]        ;40         ;显示收入
                        mov dl,12
                        mov cx,3
                                                
                
                        
                        call show_str                ;49
                        
                                         
                        
                        
                        mov ax,[bx+si+84]        ;4c
                        push ax
                        mov ax,[bx+si+86]
                        push ax
                        pop dx
                        pop ax
                        call dtoc                ;56
                        
                   
                        
                        
                        mov dh,ds:[272]         ;59   ;显示人数
                        mov dl,25
                        mov cx,4
                
                        
                        call show_str            ;62
                        
                                        ;显示人数
                        
                        
                        
                        
                                            
                        mov ax,[bx+si]     ;65    ;准备收入(被除数);69
                        push ax              ;高16位
                        mov ax,[bx+si+2]    ;68
                        push ax             ; 低16位
                        
                                                                      
                       mov ax,[bx+si+84]     ;6    ;准备除数(人数)
                        push ax
                        
                        pop cx             ;  ;准备除平均
                        pop dx
                        pop ax             ;

                        
                        
                        call divdw      ;73     ;作除法
                        
                        
                        
                        
                        call dtoc            ;76
                        
            
            mov dh,ds:[272]
                        mov dl,33
                        mov cx,5
                        
                   
                        call show_str                ;80
                                         
                        
                        
                  
           
        
                   add byte ptr ds:[272],1   ;
                        
           add bx,4          ;86
                        
                        pop cx
                        
                        dec cx            ;
                        jcxz jx           ;8f
                        
                        jmp  kaa          ;
                        
                
                         
                         
        jx:                mov ax,4c00h     ;93
                        int 21h           ;
                        
                        
                        

                                        
                        
                        
                        
                         
                         
                
                 
dtoc:                        ;抽取数字,并转化为SACII码

                 push dx
                 push cx
                                 push ax
                                 push si
                                 push bx
                


                  
                  mov bx,0        ;bx在子程序中用来存放位数,用栈来临时存放修改后的字符
                  
           s1:    mov cx,10      ;9e
                                  
                  
                                  call divdw      ;a6
                                  mov di,cx                 ;把余数给di临时保存
                                  mov cx,ax       ;商给CX,用来判断商是否为零; a4
                                  
                         
                  jcxz s2       ;如果CX=0则跳到S1
                                  
                                  mov cx,di      ;恢复CX内值
                 
                  
                  add cx,30h      ;余数加30H,得到相应的ASCII码 ,a9
                                  push cx         ;保存到栈
                  inc bx          ;
                  
                                  
                                  
                  jmp short s1     
                                  
                                  
           s2:    
                          mov cx,di        ;b8
                          add cx,30h       ;商为0时,余数为个位,b2
                          push cx           ;b6
                                  
                                  inc bx          ;be ;再进行一次栈操作,(补充当“商为零而余数不为零”时的情况)
                          
                                  mov cx,bx        ;用CX出栈,把总进栈次数给CX
                                  mov di,cx        ;本程序中,用来保存长度
                                  mov si,273     ;bb
                                  mov ds:[si],cl  
                                  
                   s3:          
                          pop ax            ;
                          
                                  mov ds:[si+2],al
                                  inc si            ;
                                  
                                  loop s3            ;c5
                                  
                                  
                                  
                                  
                 
                                                 ;s3实现将栈中的数据依次出栈,放到指定内存
                          
                
                  pop bx     ;cf ;bx压进去对,取出来就不对了??
                      pop si            ;
                               pop ax           
                                  pop cx
                                  pop dx


ret                    ;  cc
              
                   










divdw:  ;参数:(ax)=dword型数据的低16位,(dx)=dword型数据的高16位,(cx)=除数  ,b6
        ;返回:(dx)=结果的高16位,(ax)=结果的低16位,(cx)=余数

                 push si        ;e7
                 push bx
                 
                 
                 
         push ax        ;低16位先保存
                 mov ax,dx    ;ax这时候的值是高16位了
                 mov dx,0       ;dx置零是为了不影响下边余数位,使得高16位为0
                 
                 div cx          ;H/N(16位除法)
                 mov bx,ax       ;ax,bx的值为int(商)H/N,dx的值为rem(余数)
                   
                 
                 pop ax          ;ax的值现在是L(低16位)
                 div cx          ;L/N(16除法),ax被除数低16位,dx被除数高16位
                 
                 mov cx,dx
                 mov dx,bx
                 
                 pop bx
                 pop si
                 ret             ;fa
                 
                 




                 

         
         
         
show_str: ;在指定位置显示字符,dh=行号(0-24),dl=列号(0-79),cx=颜色
          ; ds:si指向字符串首地址
                  
         push cx      ;fd
         push si
                 push bx
                 push dx
                 
                 
                 
                 mov cx,ax      ;颜色给cx
                 
         mov ax,0b800h  ;显存的开始地址
                 mov es,ax     ;10b ;ES中存放是显存的第0页(共0-7页)的起始段地址
        
         mov al,160     ;每行80字符即160字节
         dec dh         ;第八行
                 mul dh         ;111
                 mov bx,ax
                 
                 mov al,2      ;一个字符占二字节
                 dec dl        ;列从零开始,第三列,所以减一
                 mul dl
                      
                 add bx,ax      ;此时BX中放的是行与列的偏移地址
                 mov di,0        ;di 指向显存的偏移地址
                 mov al,cl       ;把颜色参数,放到al;e6
                 
                 mov si,273        ;11b
                 mov cx,0
                 mov cl,[si]      ;
                 
                 
                 
        str: 
             mov ah,ds:[si+2]   ;ds:[si]指向‘Wlcome to masm!',0,,,,e8
                
                 
        
                 mov es:[bx],ah   ;偶字节放字符
                 mov es:[bx+1],al  ;奇字节放,颜色属性
                 
                 inc si
                 add bx,2
                 loop str           ;132
                 
                 
                 
                 
        ok:         
             pop dx
                 pop bx
             pop si
             pop cx
             
                 ret         ;显示字符串的子程序【定义结束】  ;136
         
                  
                 
        code ends
end start
        
                 
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-6 17:44:14 | 显示全部楼层
改变:64、84、106、142行cx 值,就可改变数字颜色:titter:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-10-3 19:35:07 | 显示全部楼层
不错,学习了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-28 23:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表