⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 进制转换10-2-10.asm

📁 该程序把从键盘输入的多位十进制数转换为二进制数
💻 ASM
字号:
;******************************************;
;   copyright@vivian_chan                  ;
;   chen_xi 2006                           ;
;                                          ;
;******************************************;



data segment
  bin dw 0            ;存放10->2后的二进制数
  string db 10 dup(?) ;用来以字符串的形式存放用户输入的数字
  result db '00000$'  ;存放2->10后待输出的结果
data ends

stack segment para stack ;定义堆栈段
db 100 dup(?)
stack ends

code segment
  assume ds:data,ss:stack,cs:code
start:mov ax,data    ;数据段初始化
      mov ds,ax
inchange:
      mov ah,01h        ;01号功能调用,键盘输入字符,al为入口参数
      int 21h
      cmp al,0dh       ;是回车吗?
      jz finish        ;循环出口:输入回车时跳出
      and al,0fh       ;将输入数据(ASCII码)高四位清零
      push ax           ;ax压栈,供后面使用
      mov ax,bin
      mov bx,10
      mul bx             ;将bin中取出的数乘10
      mov bin,ax          ;乘10后放回bin
      pop ax              ;将之前输入并屏蔽过高四位的数据从堆栈中弹出
      and ax,0ffh
      add bin,ax          ;将弹出的值与bin中数值相加,并放入bin
     jmp inchange          ;循环inchange
finish:
          mov ax,bin              ;在div指令的默认被除数寄存器里放入bin中的二进制数
          mov di,offset result[4] ;将2->10的结果从result字符串的最后一个单元放起,以便按序输出
          mov bx,10               ;在bx中放入除10取余的除数
outchange:
          mov dx,0
          div bx                   ;除10
          add dl,30h               ;将得到的余数转换成ASCII码
          mov [di],dl              ;将此ASCII码放入result中
          dec di                   ;指针减1
          cmp ax,0                 ;余数为0?
          jz output                ;若为0,转到output
          jmp outchange            ;若为0,循环
output:   
          mov dx,offset result      ;取result字符串首地址
          mov ah,09h                ;09号功能调用,输出字符串
          int 21h
          mov ah,4ch                ;返回DOS
          int 21h
code ends
     end start

⌨️ 快捷键说明

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