1 ;功能:16位的2進制數轉為5位的10進制數並輸出 2 DATAS SEGMENT 3 Num dw 1111100111B ;帶轉換的二進制數(<=16位 測試用例對應的10進制為999) 4 buffer db 5 dup(0) ;用來保存結果 5 jm dw 10000,1000,100,10,1 ;用於每次循環的除數 6 DATAS ends 7 CODES SEGMENT 8 ASSUME CS:CODES, DS:DATAS 9 START: 10 mov AX,DATAS 11 mov DS,AX 12 13 mov di,offset jm 14 mov si,offset buffer 15 16 xor cx,cx 17 mov cx,5 ;設置循環次數5次 18 19 mov ax,Num 20 21 next: 22 xor dx,DX 23 mov bx,[di] ;取除數 24 add di,2 ;存放除數的偏移地址每次加2因為 為字 25 div bx 26 add al,30H ;轉化為ASCII碼便於輸出顯示 27 mov [si],al ;保存商 28 inc si ;存放結果的偏移地址每次加1 29 mov ax,DX ;把余數為新的被除數 30 31 loop Next 32 33 print: 34 mov byte ptr[si],'$' ;字符串末尾加上結束符 35 mov dx,offset buffer 36 mov ah,09H 37 int 21h 38 ;向屏幕打印輸出 39 exit: 40 mov ah,4ch 41 int 21H 42 CODES ends 43 end START