dhb.asm

来自「自己写的进制转换代码」· 汇编 代码 · 共 128 行

ASM
128
字号
.model       ;十进制转二进制
.stack       ;decimalist convert to binary
.data
crln      db 0dh,0ah,'$'
input     db "please input",0dh,0ah,'$'
output    db "output data",'$'
max_len   db  3h
act_len   db  ?
char_buf  db  3 dup(0),'$'
.code
main proc far 
  mov ax,@data
  mov ds,ax
  mov dx, offset input
  mov ah,9h
  int 21h    
  mov dx,offset max_len
  mov ah,0ah
  int 21h   
  mov bx,10
  xor cl,cl
  mov cl, act_len
  xor si,si
  xor dx,dx
  xor ax,ax
lop:
  mul bx
  mov dx,ax
  mov al,char_buf[si]
  and al,0fh
  add dl,al 
  mov ax,dx
  inc si
  loop lop    
  mov bx,ax
  mov dx,offset crln
  mov ah,9h
  int 21h  
  mov dx,offset output
  mov ah,9h
  int 21h   
  mov cx,8
lop1:
   sal bl,1
   jc one
   mov dl,'0'
   mov ah,02h
   int 21h
   jmp exit
one:
   mov dl,'1'
   mov ah,02h
   int 21h   
exit:
   loop lop1    
  mov ah, 4ch 
  int 21h   
main endp 
      end main


.model       ;十六进制转二进制
.stack       ; hex convert to binary                   binary
.data
crln      db 0dh,0ah,'$'
input     db "please input",0dh,0ah,'$'
output    db "output data",'$'
table     db  "0123456789abcdef"
max_len   db  3h
act_len   db  ?
char_buf  db  3 dup(0),'$'
.code
main proc far 
  mov ax,@data
  mov ds,ax
  mov dx, offset input
  mov ah,9h
  int 21h    
  mov dx,offset max_len
  mov ah,0ah
  int 21h   
  mov bx,16
  xor cl,cl
  mov cl, act_len
  xor si,si
  xor dx,dx
  xor ax,ax
  xor di,di
lop:
   mul bx
lopp:
   mov dl,offset char_buf[si]
   cmp dl,table[di]
   je quit
   inc ax
   inc di
   jmp lopp
quit:
   inc si
   xor di,di
   loop lop

  mov bx,ax
  mov dx,offset crln
  mov ah,9h
  int 21h  
  mov dx,offset output
  mov ah,9h
  int 21h   
  mov cx,8
lop1:
   sal bl,1
   jc one
   mov dl,'0'
   mov ah,02h
   int 21h
   jmp exit
one:
   mov dl,'1'
   mov ah,02h
   int 21h   
exit:
   loop lop1    
  mov ah, 4ch 
  int 21h   
main endp 
      end main

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?