回 帖 发 新 帖 刷新版面

主题:[讨论]如何将al/ax/eax中的数转换为二进制字符串

小弟请教各位高手如何将al/ax/eax中的数转换为二进制字符串,请写一下能运行的代码

回复列表 (共3个回复)

沙发

.model small
.386
.stack
.data
  string db  32 dup(30h) ,'$'   ;初始字符串为全零
.code
.startup
   mov eax, 12345678h  ;eax内容可以为任意值
   mov cx,32
   mov di,0
begin:
   rol eax,1          ;循环左移1位,移出位在CF中
   .if carry?          ;如果CF=1则把1的ASCII码存入字符串中
     mov string[di],31h
   .endif
   inc di
loop begin
   lea dx,string  ;显示字符串
   mov ah,9
   int 21h
  .exit 0
   end
   
   ;该程序输出为:00010010001101000101011001111000

板凳

大哥,请问一下mov cx,32和.endif和mov ah,9和int 21h
的作用

3 楼

mov cx,32;控制后面的LOOP语句循环的次数
.IF <条件>
.....
.ENDIF 是分支语句,当if后面的条件为真值时执行该分支

当AH=9时,执行INT 21H指令是把DX指向的字符串显示在屏幕上

我来回复

您尚未登录,请登录后再回复。点此登录或注册