0
点赞
收藏
分享

微信扫一扫

【汇编语言显示九九乘法表】

;输出九九乘法表
assume cs:code,ds:data1,es:data2,ss:stack
 data1 segment
      db 512 dup (0)
 data1 ends
 data2 SEGMENT
       db 1,2,3,4,5,6,7,8,9
 data2 ends
       
 stack segment
    db 256 dup (0)
 stack ends
 code segment
   start: mov ax,data2
          mov es,ax
          
          mov ax,data1
          mov ds,ax        ;用于存放i*j=k
          
          mov ax,stack
          mov ss,ax
          
          mov si,0
          mov di,0
          mov bp,0
          mov ax,00
          mov dx,1     ;line
          mov bx,0     ;
          mov cx,0
          
  assignment:  
                 mov di,0                  ;0021
                 mov bx,0 
                     
    
     storage:       
                                     ;002e
            push ax
            jmp firstaddress                 ;0030    00a2
    
     cycle:
                 mov al,byte ptr es:[bp]      ;乘数首地址  0025
                                            
                              
    multiplication: 
                        mul byte ptr es:[di]         ;0028
                     mov byte ptr es:[9],al      ;002b
               
    saveds:
            push si
            push ax
            mov si,cx
                        ;0033
            mov al,byte ptr es:[di]        ;di变化被乘数
            add al,30h
            mov ds:[si+bx+0],al
            mov byte ptr ds:[si+bx+1],2ah
            mov al,byte ptr es:[bp]
            add al,30h
            mov ds:[si+bx+2],al
            mov byte ptr ds:[si+bx+3],3dh 
            mov al,byte ptr es:[9]
            cmp al,10
            jb savenum
            call datoch      
            mov al,byte ptr es:[14]
            mov byte ptr ds:[si+bx+4],al    ;ds存放es[di]*es:[si]=es:[bp] 
            mov al,byte ptr es:[13]
            mov byte ptr ds:[si+bx+5],al            ;0055
            mov byte ptr ds:[si+bx+6],00h
            pop ax
            pop si
            jmp  cycle2
      savenum:
            mov byte ptr ds:[si+bx+4],'0'   ;ds存放es[di]*es:[si]=es:[bp] 
            mov al,byte ptr es:[9]
            add al,30h
            mov byte ptr ds:[si+bx+5],al            ;0055
            mov byte ptr ds:[si+bx+6],00h
            jmp cycle2
    cycle2:
           add bx,7                       ;0059
            inc di
            cmp di,dx                       ;005f
            jnb display                      ;0061
            jmp cycle                      ;
            
    datoch:
           push dx
           push bx
           push ax
           mov dx,0
           mov ax,0
           mov al,byte ptr es:[9]
           mov bx,10
           div bx
           add dl,30h
           add al,30h
           mov byte ptr es:[13],dl
           mov byte ptr es:[14],al
           pop ax
           pop bx
           pop dx
           ret
          
    display:
          push ax
          push bx
          push dx
          mov ax,0
          mov bx,0
          mov ah,02h           ;0079
          add dl,10
          mov dh,dl
           mov dl,00
           mov bh,0
           int 10h 
          pop dx
          pop bx 
          pop ax
          
          push ax
          push dx
          push bx
          mov ax,7
          mul dx
          mov bx,ax
         mov ax,'$'
         mov ds:[si+bx-1],ax
           mov dx,si
           mov ah,09h
           int 21h
           pop bx
           pop dx
           pop ax
           inc bp
           inc dx         ;line+1
           cmp dx,9              
           ja return                      
           jmp assignment
          
           
 firstaddress: 
           push si
           push ax
           push dx
           push bx
           dec dx
           mov ax,dx     ;008a  dx为行数
           mov bx,7     ;
           mul bx        ;dx=0  
           mov word ptr es:[11],ax     ;save ax       
           add cx,word ptr es:[11] 
          pop bx
          pop dx
           pop ax
           pop si
           jmp cycle           ;0095     
   return: mov ax,4c00h
           int 21h
           
 code ends
 end start
        
            
          

举报

相关推荐

九九乘法表

输出九九乘法表

打印九九乘法表

九九乘法表(简述)

Python九九乘法表

0 条评论