计算机汇编语言运用哪个进制,运用汇编语言怎样以2进制、8进制、10进制、16进制方式输出10进制的数的计算结果。...

满意答案

assume cs:code

data segment

db 10 dup (0)

data ends

stack segment

dw 8 dup (0)

stack ends

code segment

start:mov ax,12666

mov bx,data

mov ds,bx

mov si,0

mov bx,stack

mov ss,bx

mov sp,16

call dtoc

mov dh,8

mov dl,3

mov cl,2

call show_str

mov ax,4c00h

int 21h

dtoc:push ax

push cx

push dx

push si

xor si,si

s0:mov cx,10 ;除数赋给cx

mov dx,0

;以下操作取字符

call divdw ;调用不产生溢出的除法运算

add cx,30h

push cx ;cx中保存的是子程序调用后得到的余数,入栈

inc si ;使用si记录有多少位数

mov cx,ax ;将商赋给cx,判断各位的数值是否全部求出

jcxz ok0

jmp short s0

ok0:mov cx,si

xor si,si ;以下将得到各位数值保存到内存单元中

s1: pop ax

mov [si],al

inc si

loop s1

mov byte ptr [si],0

pop si

pop dx

pop cx

pop ax

ret ;返回

divdw:push bx ;用bx暂存,先将其入栈,程序结束时还原原值

push ax ;将被除数的低16位入栈,下一步计算时用

;以下进行被除数高16位与除数的除法运算

mov ax,dx ;将被除数的高16位赋给ax

xor dx,dx ;被除数的高16位清零

div cx

mov bx,ax ;将高位的商暂存在bx中

;以下进行被除数低16位与除数的除法运算

pop ax ;将被除数低16位放入ax中,上步计算的余数作为本次运算的高16位,已默认在dx中

div cx ;商在ax中,余数在dx中

;按程序要求将结果保存

mov cx,dx ;cx中保存结果的余数

mov dx,bx ;dx中保存结果的高16位,ax中保存着结果的低16位

pop bx ; 还原bx中的值

ret

show_str:push ax

push bx

push cx

push dx

push es

mov ax,0b800h

mov es,ax

dec dh

mov ax,160

mul dh

mov bx,ax

mov ax,2

mul dl

sub ax,2

add bx,ax

mov di,0

mov al,cl

s2: mov cl,[si]

mov ch,0

jcxz ok

mov es:[bx+di],cl

mov es:[bx+di+1],al

inc si

add di,2

jmp short s2

ok: pop es

pop dx

pop cx

pop bx

pop ax

ret

code ends

end start

00分享举报

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值