小马过河 发表于 2012-1-9 16:55:27

第十章 最后一个数字变文本显示代码完成

       assumecs:dmd
      sjd segment
      db 10 dup(0)
      sjd ends
      
dmd segment
cxks:mov ax,12666
   mov bx,dmd
   mov ds,bx
       mov si,0
       call dtoc       
       
       mov dh,8
       mov dl,3
       mov cl,2
       call show
      mov ax,4c00h
          int 21h
          
dtoc: mov bx,0
s1:mov dx,0
       mov cx,10
      div cx   ;DX AX 中的数据除10,余数给CX
          add dx,30h;取其ascii码,这里与书上说的不符 DX中存余数
   
       mov ds:,dl;将数据送入代码段中保存
              
       mov cx,ax       
       jcxz tc ;AX中为0时跳转退出
       inc bx
       jmp s1       
   tc :ret       
   
   
   
   
show:mov al,dh
   push cx
       mov cl,160              
       mul cl
       pop cx
   mov dh,16
   div dh
   add ax,0b800h
   mov es,ax;将显存第三行段地址送给ES附加段
       mov dh,0
       add dl,dl;占用2个字节,ASCII码和字符属性
   mov di,dx;第三列偏移送给DI
       mov si,0                     
   mov dl,cl   ;将字符属性送给DL
                             
s3:       mov al,ds:
       mov es:,al
       mov es:,dl
       mov cx,bx

       jcxz s2
       
       add di,2       
       dec bx   ;减一指令
       jmp s3
              
       s2:ret                                                  
dmd ends
       end cxks为神魔书上说 DX+ AX为被除数 CX 为除数,余数存放在CX中,但我用DEBUG 检测余数却存放在DX中望高手指教
页: [1]
查看完整版本: 第十章 最后一个数字变文本显示代码完成