主题:[讨论]如何将al/ax/eax中的数转换为二进制字符串
dmt198704
[专家分:30] 发布于 2007-05-22 19:57:00
小弟请教各位高手如何将al/ax/eax中的数转换为二进制字符串,请写一下能运行的代码
回复列表 (共3个回复)
沙发
塞北江南 [专家分:1350] 发布于 2007-05-23 11:06:00
.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
板凳
dmt198704 [专家分:30] 发布于 2007-05-23 11:48:00
大哥,请问一下mov cx,32和.endif和mov ah,9和int 21h
的作用
3 楼
塞北江南 [专家分:1350] 发布于 2007-05-25 09:01:00
mov cx,32;控制后面的LOOP语句循环的次数
.IF <条件>
.....
.ENDIF 是分支语句,当if后面的条件为真值时执行该分支
当AH=9时,执行INT 21H指令是把DX指向的字符串显示在屏幕上
我来回复