• 输入一个十进制的数到dx_ax,然后十六进制转十进制输出


      1 ;HtoD
      2 
      3 data segment
      4       n dw ?                        
      5 data ends
      6 
      7 stack segment
      8         db 50 dup(?)
      9 stack ends
     10 
     11 code segment
     12         assume cs:code,ss:stack,ds:data
     13   start:mov ax,stack
     14         mov ss,ax
     15         mov sp,50
     16         mov ax,data
     17         mov ds,ax
     18 
     19         mov si,10
     20         mov di,10000
     21         mov bx,0
     22         mov cx,0
     23                         ;input the number which is lower than 6,5536,0000(65536(high)*10000(low))
     24       s:mov ah,1
     25         int 21h
     26         cmp al,0dh      ;when input '
    ',quit
     27         jz t
     28         sub al,30h
     29         mov ah,0
     30         mov ds:[0],ax
     31                         ;high part
     32         mov ax,bx       
     33         mul si
     34         mov bx,ax
     35                         ;low part
     36         mov ax,cx       
     37         mul si          ;ax*10=dx_a
     38         div di          ;can't div 10000h(0000h~FFFFh)  =ax(Shang)...dx(Yu)
     39 
     40         add bx,ax       ;high part
     41         mov cx,dx       ;low part
     42         add cx,ds:[0]   ;it won't JinWei , because
     43                         ;dx_ax=ax*10 , the last character of dx_ax value 0 ,
     44                         ;dx=dx_ax%10000 , the last character of dx is 0 ,
     45                         ;dx=dx+ds:[0](0~9) , the last character won't JinWei ,
     46                         ;thus cx won't JinWei
     47         jmp s
     48       t:mov ax,cx
     49         mov dx,bx
     50 
     51         cmp dx,0
     52         jnz HtoD_dword
     53         call HtoD_word
     54 
     55    exit:mov ah,4ch
     56         int 21h
     57 
     58 HtoD_word:                           
     59         mov bx,10       ;division
     60         mov cx,0
     61         mov dx,0        ;high part(dx_ax<10000)
     62       u:div bx
     63         push dx
     64         mov dx,0
     65         inc cx
     66         cmp ax,0
     67         jnz u
     68 
     69         mov ah,2
     70       v:pop dx          ;dx<10
     71         add dl,30h      ;0->48 48
     72         int 21h
     73         loop v
     74 
     75         ret
     76 
     77 HtoD_dword:
     78         push ax         ;store low part
     79         mov ax,dx
     80         call HtoD_word
     81                         ;output '0'(low part must contain four character)
     82         pop bx          ;bx=low part
     83         mov ah,2
     84         mov dl,'0'
     85         cmp bx,1000
     86         ja w
     87         int 21h
     88         cmp bx,100
     89         ja w
     90         int 21h
     91         cmp bx,10
     92         ja w
     93         int 21h
     94 
     95       w:mov ax,bx       ;ax=low part
     96         call HtoD_word
     97 
     98         jmp exit
     99 
    100 code ends
    101         end start
    102 
    103         ;mov ax,432
    104         ;call HtoD_word
    105 
    106         ;mov ax,0
    107         ;mov dx,1
    108         ;call HtoD_dword
  • 相关阅读:
    【翻译】谈 focus 和 blur 的事件代理
    【翻译】细分域名的优势
    Form窗体的Combobox键值对绑定
    日志
    ajaxload
    c#文件整理程序
    每天工作4小时的程序员
    每年这一天
    转载从交友到社交的个人成长
    旅行的意义
  • 原文地址:https://www.cnblogs.com/cmyg/p/6916803.html
Copyright © 2020-2023  润新知