汇编输出超过2559的数

  • div:被除数的高16位存放在DX中,低16位存放在AX中,一般情况下只用AX,把DX置零,得到的结果AX中存放商,DX存放余数。
    被除数存放在AX中,得到的结果商存在AL中,余数存在AH中。
  • mul:1位存在AX中,另一位存在其他的16位寄存器中,mul 16位寄存器,得到的结果高16位存放在DX中,低16位存放在AX中,一般情况下用到的是AX。
    一位存放在AL中,得到的结果存在AX中。

入口参数为DX和SI,DX中存放的是要输出的数值。
SI为当前偏移值,除10得到的余数倒着存放在dval中

RESULT DW ?
dval db 5 dup(?)
dlen=$-result ;当前偏移值

output proc ; 输入参数dx,存要输出的结果    
     push ax
     push cx    
  p1:     
     dec si
     mov ax,dx
     mov dx,0
     mov cx,10
     div cx
     xchg ax,dx
     mov [si],al
     cmp dx,0
     jne p1     
  p3:
   mov dl,[si]
   add dl,48
   mov ah,2
   int 21h
   add si,1
   cmp si,dlen
   jb p3
     jmp p4
 p4:    
     pop cx
     pop ax   
    ret
 output endp


;主函数中
mov si,offset result
 mov dx,[si]
 mov si,offset dlen
 call output

;输出较大的数值
DATAS SEGMENT
    ;此处输入数据段代码  
DATAS ENDS

STACKS SEGMENT
    ;此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
    ;此处输入代码段代码
    
    mov ax,14858
    call output
    
    MOV AH,4CH
    INT 21H
    
    output proc;AX作为入口参数,DX存高16位,AX存低16位
    push bx
    push cx
    push dx
    
    mov bx,10
    mov cx,0
 A1:
    mov dx,0
    div bx;商在AX中,余数在DX中
    push dx
    inc cx
    cmp ax,0
    jne A1
 A2:
 	pop dx
 	add dl,48
 	mov ah,2
 	int 21h
 	loop A2
 	
    pop dx
    pop cx
    pop bx
    ret 
    output endp
      
CODES ENDS
    END START






  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值