| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
 本帖最后由 一只et 于 2020-1-10 16:18 编辑  
 
(10.1)assume cs:code  
data segment  
 db 'Welcome to masm!',0 
data ends 
 
 
code segment 
start: mov dh,8 
       mov dl,3 
           mov cl,2 
           mov ax,data 
           mov ds,ax 
           mov si,0 
           call show_str 
           mov ax,4c00H 
           int 21H 
            
show_str:             mov ax,00a0H 
                           mul dh 
                           mov bx,ax               ;定位行数 
 
                           mov dh,00H 
                           mov di,dx 
                           add di,3           ;准备列数  注意位置 
                           mov dl,cl               ;为了使用jcxz把cl让出来 
                           mov ax,0b800H           ;b8000H~bffffH    
                           mov es,ax                ;打开显示存储空间 
                            
s1:                            mov al,ds:[si]           ;放入字符 
                           mov es:[bx+di],al      
                           inc bx       
                           inc si                     
                           mov es:[bx+di],dl         ;放入颜色 
                           inc bx 
                           mov ch,00H                 ;准备cx跟字符串一样 
                           mov cl,ds:[si] 
                           jcxz s2 
                           loop s1 
s2:                      ret  
                            
  code ends 
  end start 
 
 
--------------------------------------------------------------------------------分割线------------------------------------------------------------------------------------- 
 
 
(10.3)assume cs:code  
 
data segment 
 
db 10 dup (0) 
 
data ends 
 
 
code segment 
start: mov ax,54134 
       mov bx,data 
           mov ds,bx 
           mov si,0 
           call dtoc 
            
           mov dh,8 
           mov dl,3 
           mov cl,2 
           call show_str 
            
           mov ax,4c00H 
           int 21H 
 
dtoc:     mov cx,5                  ;循环和jcxz用的cx  循环前定义好 
          mov si,4                   ;设好长度  除完顺序是反的 
 
s4:       push cx                ;推入栈里 
 
          mov dx,0000H              ;16位除法准备好 
          mov cx,000aH        
          div cx 
 
                  add dx,30H                ;字节高位给3H 
                 
                                                    
                  mov bx,0000H 
 
                  mov [bx+si],dl               ;放入内存单元 
                  sub si,1 
                  pop cx 
                  jcxz s3 
                  loop s4 
 
s3:                  mov ax,0000H             ;用完后做好收尾 
                  mov bx,0000H 
                  mov cx,0000H     
                  mov dx,0000H 
                  mov si,0000H 
                  ret 
                   
                   
 
show_str:             mov ax,00a0H 
                           mul dh 
                           mov bx,ax               ;定位行数 
 
                           mov dh,00H 
                           mov di,dx 
                           add di,3           ;准备列数  注意位置 
                           mov dl,cl               ;为了使用jcxz把cl让出来 
                           mov ax,0b800H           ;b8000H~bffffH    
                           mov es,ax                ;打开显示存储空间 
                            
s1:                            mov al,ds:[si]           ;放入字符 
                           mov es:[bx+di],al      
                           inc bx       
                           inc si                     
                           mov es:[bx+di],dl         ;放入颜色 
                           inc bx 
                           mov ch,00H                 ;准备cx跟字符串一样 
                           mov cl,ds:[si] 
                           jcxz s2 
                           loop s1 
s2:                      ret  
                code ends 
                end start |   
 
 
 
 |