dx 汇编dec_汇编语言:. 将DX寄存器中的二进制数(3 F 2 E H)以十六进制数形式显示在屏幕上;然后换行从...

本文通过汇编语言代码展示如何将DX寄存器中的十六进制数3F2Eh转换为字符并在屏幕上显示,并计算1的个数。程序首先进行移位操作,然后将结果转换为ASCII码并输出,最后计算转换后的十进制数中1的个数。
摘要由CSDN通过智能技术生成

展开全部

1的个数用十进32313133353236313431303231363533e58685e5aeb931333262343037制表示的,程序如下:

;7.asm

data segment

string  db   3 dup(0),'$'   ;保存转换后的余数,初始化为30h,余

;数直接加到对应单元,转化为ascii码

data ends

code  segment

assume  cs:code,ds:data

start:

mov ax,data

mov ds,ax

mov dx , 3F2Eh   ;预置dx要显示的值

push dx

mov bx,dx

mov cl,4        ;移位指令中用于指定移位次数的值

mov dh , 0       ;dh用于记录循环次数,正计数

again: rol bx , cl      ;循环移位指令,完成显示后bx值不变

;从高位开始显示

mov dl , bl      ;当前要显示的4位移至最低位上

and dl , 0fh     ;清除高4位

cmp dl , 0ah     ;若是0~9,则直接加30H显示;

;若是A~F,则另外再加7(41H-0AH=30H+7)

jb  disp

add dl , 7

disp:  add dl , 30h     ;不能使用OR DL,30H,是因为数值可能为A~F

mov ah , 2

int 21h

inc dh           ;记录循环次数,达到4次,即结束。

cmp dh , 4

jnz again

mov ah , 02h ;回车换行

mov dl , 0ah

int 21h

mov ah , 02h

mov dl , 0dh

int 21h

mov ah,02h

mov dl,'1'

int 21h

mov dl,'6'

int 21h

pop dx

xor bl,bl

next1:   and dx,dx;若dx为0,移位结束

jz  next2

shl dx,1

adc bl,0

jmp  next1

next2:next2: mov  bh,0

mov  cx , 10              ;将bl中数据转换成十进制输出,cx为数制转换的基数

lea  si , string+4        ;si指针指向缓冲区末尾,依次减量,使余数倒序排列

mov  ax , bx            ;要转换的数据保存于ax

next3: mov  dx , 0               ;除法转换,要使用32位被除数,dx为无符号数的0扩展,每次除法都要进行扩展

div  cx                   ;除法后,ax为商,准备下次除法;dx为余数,值为0~9,

;dl可以保存于string中,用于显示

add  dl , 30h             ;将余数转换为字符,保存于si指定的缓冲区中

mov  [si] , dl

dec  si                   ;指针修改,准备存放下一个余数

cmp  ax , 0               ;直到商为0,转换结束

jz   over

jmp  next3

over:  mov  dx , si              ;使用09号DOS功能调用,显示转换后的字符串

inc  dx

mov  ah , 09h

int  21h

mov ax , 4c00h

int 21h

code  ends

end start

/结果如下:16后面的10是1的个数

J:\masm611>7

3F2E

1610

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值