王爽《汇编语言》实验9

网上观看他人的代码如下:
  1. assume cs:code,ds:data,ss:stack  
  2.   
  3. data segment  
  4.     db 'welcome to masm!'  
  5.     db 02h,24h,71h  
  6. data ends  
  7.   
  8. stack segment  
  9.     dw 8 dup (0)  
  10. stack ends  
  11.   
  12. code segment  
  13. start:    
  14.     mov ax,data     
  15.     mov es,ax    ; es指向数据段  
  16.       
  17.     mov ax,0B800h  
  18.     mov ds,ax    ;ds指向显示的部分  
  19.   
  20.     mov bx,0     ;显示偏移 三次每次增加10h      
  21.     mov si,10h   ;颜色的偏移量,三次循环每次增加1h  
  22.     mov cx,3  
  23.       
  24. s0:              ;三行循环  
  25.     mov ah,es:[si] ;保存字符的颜色 一个字节  
  26.     push cx         
  27.     push si  
  28.   
  29.     mov cx,16    ;十六次循环  
  30.     mov si,0     ;si显示区域每次的偏移 每次加2  
  31.     mov di,0     ;di字符读取时候每次的偏移 每次加1  
  32. s1:          ;每一行 先放一个ascii再放属性,放16次  
  33.     mov al,es:[di]  ;字符放在al里  
  34.     ;mov ds:[bx+si],al  ;低字节放字符  
  35.     mov ds:[bx+si],ax  
  36.       
  37.     ;mov ds:[bx+si+1],ah ;高位字节存放颜色  
  38.        
  39.     add si,2  
  40.     add di,1  
  41. loop s1  
  42.     pop si  
  43.     pop cx  
  44.     add si,1h    ;偏移量为1指向下一个字节  
  45.     add bx,0a0h  ;每行160个字符  
  46.     add dx,1h  
  47. loop s0  
  48.   
  49. all:  
  50.     jmp short all   ;一直循环  
  51.   
  52.     mov ax,4c00h  
  53.     int 21h  
  54.       
  55. code ends  
  56. end start  
有几处不恰当,做出一点修改;

自己的修改:

assume cs:codesg,ds:data,ss:stack

data segment
        db 'welcome to masm!'
        db 02h,24h,71h
data ends

stack segment
        dw 8 dup (0)
stack ends

codesg segment
         start:mov ax,data
               mov ds,ax
               mov ax,0b800h
               mov es,ax
               mov ax,stack
               mov ss,ax

               mov bx,0
               mov si,10h
               mov cx,3

            s0:mov ah,ds:[si]
               push cx
               push si

               mov si,0
               mov di,0
               mov cx,16

             s:mov al,ds:[di]
               mov es:[bx+si],al
               mov es:[bx+si+1],ah
               add si,2
               inc di
               loop s

               pop si
               pop cx
               add si,1h
               add bx,0a0h
               loop s0

           all:jmp short all

               mov ax,4c00h
               int 21h
codesg ends

end start


修改后结果:



猜你喜欢

转载自blog.csdn.net/qq_36998053/article/details/80758373
今日推荐