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
原文地址:https://www.cnblogs.com/roseAT/p/10246423.html
时间: 2024-10-12 09:11:34