1楼:匿名用户
两种方法bai:
查表法计算法du
将bx的内容连续zhi
除以8,余数加上dao30h,转换成ascii码,就回可以显示了(计算法,查表就是将答
余数在table表中取出对应的ascii数值),当商为零,那么,那时候的余数就是最高位了
如何用汇编语言编写:从键盘上输入一个十六进制数,将其转换成一个十进制数显示。
2楼:匿名用户
datasegment
data1db?
data2db2dup(?)
data20db2dup(?)
data3db'inputerror,pleaseenteragain!','$'
dataends
stacksegment
db5dup(?)
stackends
codesegment
assumecs:code,ds:data,ss:stackstart:movax,data
movds,ax
movax,stack
movss,ax
movbx,0
input:movah,01h
int21h
cmpal,51h;判断输入的字符是否为qjeexit
;如果是q就退出
cmpal,71h;判断输入的字符是否为qjeexit
;如果是q就退出
pushax
;把从键盘输入的字符的ascii存到堆栈段subal,30h;判断是否为数字
cmpal,00h
jlindi;如果不是就提示错误
cmpal,09h;
movbl,al;
jleoutput2;如果是数字就输出
popax;把al的值取出来
pushax;
movbl,al
subal,41h;判断是否为大写字母a到fcmpal,00h
jlindi
;如果不是就提示错误
cmpal,06h
jlchange
popax
pushax
movbl,al
subal,61h;判断是否为小写字母a到fcmpal,00h
jlindi;如果不是就提示错误
cmpal,06h
jlchange
popax
jmpindi
change:movsi,0
movdi,0
movcl,4
moval,bl
andal,11011111b;统一换为大写字母再转换,如果是大写字母就不变
subal,31h
movbl,al
andal,0fh;与运算,取低位
mov[data2+si],al;把个位数存到data2中moval,bl
saral,cl;算术右移,取高位
mov[data20+di],al;把十位数存到data20中output1:movdl,48h;输出十六进制符号hmovah,02h
int21h
movdl,3dh;输出等号‘=’
movah,02h
int21h
movdl,[data20+di];输出十位数adddl,30h
movah,02h
int21h
movdl,[data2+si];输出个位数adddl,30h
movah,02h
int21h
movdl,20h
movah,02h
int21h
jmpinput;跳到输入数字
output2:movdl,48h;输出数字movah,02h
int21h
movdl,3dh
movah,02h
int21h
movdl,bl
adddl,30h
movah,02h
int21h
movdl,20h
movah,02h
int21h
jmpinput
indi:movdl,20h;提示子程序movah,02h
int21h
movdx,offsetdata3;显示提示信息movah,09h
int21h
jmpinput
exit:movah,4ch
int21h
codeends
endstart
如何使用汇编语言将bx寄存器内的二进制数用十六进制数的形式在屏幕上显示出来?
3楼:匿名用户
disp proc near ;显示16进制数(字母大写)子程序,入口:bx寄存器存有二进制待显示数
mov dl,bh
mov cl,4
shr dl,cl
cmp dl,10
jc hex1
add dl,30h
hex1: add dl,37h
mov ah,02h
int 21h
mov dl,bh
and dl,0fh
cmp dl,10
jc hex2
add dl,30h
hex2: add dl,37h
mov ah,02h
int 21h
mov dl,bl
mov cl,4
shr dl,cl
cmp dl,10
jc hex3
add dl,30h
hex3: add dl,37h
mov ah,02h
int 21h
mov dl,bl
and dl,0fh
cmp dl,10
jc hex4
add dl,30h
hex4: add dl,37h
mov ah,02h
int 21h
mov dl,48h
mov ah,02h
int 21h
retdisp endp
4楼:万世流香
dec ch
cmp ch,0 ;这句忘了
jnz lop
5楼:匿名用户
程序没错呀,我直接复制过来,用ma**6.15编译成功,运行正确。
试用汇编语言编写一个程序,把存放在bx寄存器内的值(二进制数)用十六进制数的形式在屏幕上显示出来。
6楼:万世流香
data segment
str db 'h',0ah,0dh,'$'
code segment
assume cs:code,ds:datastart: mov ax,data
mov ds,ax
mov bx,1111110111100001bmov ch,4 ;循环四次
lop: mov cl,4
rol bx,cl ;每次循环环左移四位mov dx,bx
and dl,0fh ;每次取低四位,来表示一个十六进数
add dl,30h ;转化成为assic码cmp dl,3ah ;判断dl是否大于10的assic码(a+30h)62616964757a686964616fe4b893e5b19e31333262376665
jb next
add dl,7 ;大于10再加上7next: mov ah,2
int 21h
dec ch
jnz lop
mov dx,offset str
mov ah,9
int 21h
mov ah,4ch
int 21h
code ends
end start
汇编语言怎样将内存中的数据在屏幕上以十六进制形式显示出来
7楼:匿名用户
汇编语言将内存中的数据在屏幕上以十六进制形式显示出来,涉及内存数据读取、数制转换、显示控制等,参见以下程序:
data segment
total dw abcdh
data ends
code segment
assume cs:code,ds:datamain proc far
start: mov ax,data
mov ds,ax
mov bx,total
mov dl,bh
mov cl,4
shr dl,cl
cmp dl,10
jc hex1
add dl,30h
hex1: add dl,37h
mov ah,02h
int 21h
mov dl,bh
and dl,0fh
cmp dl,10
jc hex2
add dl,30h
hex2: add dl,37h
mov ah,02h
int 21h
mov dl,bl
mov cl,4
shr dl,cl
cmp dl,10
jc hex3
add dl,30h
hex3: add dl,37h
mov ah,02h
int 21h
mov dl,bl
and dl,0fh
cmp dl,10
jc hex4
add dl,30h
hex4: add dl,37h
mov ah,02h
int 21h
mov dl,48h
mov ah,02h
int 21h
mov ah,4ch
int 21h
retmain endp
8楼:做而论道
如果是字符的话输出的还是16进制数吗?
我现在要写一个排序的程序,想把排序之前和之后的数据显示出来-----------
可以参考一个现成的:
http://hi.baidu.com/%d7%f6%b6%f8%c2%db%b5%c0/blog/item/5adeb99125d2159ba877a4ae.html
9楼:夜隐霜华
先将数据转换成对应的abcii码,用dos调用输出
10楼:匿名用户
dos 功能调用,查查就知道了。书上都讲的很清楚,输出什么格式的需要调用几号功能,输出的数据放在**之类的
汇编语言,统计bx中1的个数,并在屏幕上以十六进制形式显示。 用简化
11楼:永恒
codesegment
assumecs:code
org100h
start:
pushcs
popds
movbx,x
moval,0
movcx,16
@1:shlbx,1;逻辑移位通过进位标志检查1的个数jnc@2
incal
@2:loop@1
movbl,al;将计数器的值移入bl中movbh,0
leasi,tab1
movah,2
movdl,[bx+si];查表得到数值bx对应的ascii码
int21h
movah,4ch
int21h
xdw01234h
tab1db'0123456789abcdefg';显示g时表示是16个1
codeends
endstart
如何用JAVA语言将十六进制数转换成二进制数,并输出
1楼 public static void main string args static string hextobin string s 如何用java语言将十六进制数转换成二进制数,并输出 2楼 匿名用户 public class aa system out println bstr 如何用j...
用c语言写程序,可以求出数二进制表示中有多少个
1楼 blue丶小 dev cpp 5 4 c通过编译,输入一个10进制转换成2进制,并统计有几个0 include int main char s a e a i 1 t while e s int n sum 0 for n 0 n 2楼 泰山 include stdio h include s...