| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 643 人关注过本帖
标题:请大大帮忙解读一下这个程序的BX和AX的功能
只看楼主 加入收藏
mobileangle
Rank: 2
等 级:论坛游民
帖 子:6
专家分:10
注 册:2010-5-26
结帖率:100%
收藏
 问题点数:0 回复次数:1 
请大大帮忙解读一下这个程序的BX和AX的功能
data    segment
input     db 0ah, 0dh,  'Please input a Dioxde number:', '$'
str     db      0ah,0dh
num     db      4 dup(?),'H$'
tab     db      '0123456789ABCDEF'
data    ends
code    segment
        assume  cs:code,ds:data
begin:  mov     ax,data
        mov     ds,ax
        xor     bx,bx                            ;操作数自身异或,值不变,可使进位标志CF=0, 可以清0。速度比赋值快.还可以做位运算。
        mov     cx,10
        mov      dx, offset input
        mov      ah, 9
        int      21h
next:   mov     ah,1                            ;1号功能:按下任何键,将其对应字符的ASCII码送入AL中,并在屏幕上显示该字符
        int     21h
        cmp     al,0dh
        jz      conv                            ;判断al是否等于0DH,为什么是0Dh???
        push    ax
        mov     ax,bx                           ;把bx=0移入ax,ax也未零了???
        mul     cx                              ;0和CX相乘???
        mov     bx,ax                           ;零移入零???
        pop     ax                                
        and     al,0fh                        ;取AL低位
        xor     ah,ah                            ;AL高位清零
        add     bx,ax                            ;AX移入BX
        jmp     next                            ;在AL=0dH前一直执行NEXT循环
conv:   mov     ax,bx
        mov     ch,4
        lea     bx,tab
        mov     cl,4
        lea     si,num
lopa:   rol     ax,cl                            ;AX左循环四位
        push    ax
        and     ax,000fh                        ;取AX低四位
        xlat                                        ;把待查表格的一个字节内容送到AL累加器中
        mov     [si],al                        ;表格数据存放入num
        inc     si                                ;指向num下一位
        pop     ax
        dec     ch                                ;lopa循环4次后退出
        jnz     lopa
        lea     dx,str                        ;换行回车后未退出,继续打印num中数据直到$处退出
        mov     ah,9
        int     21h
        mov     ah,4ch
        int     21h
code    ends
        end     begin
搜索更多相关主题的帖子: 解读 
2010-05-31 12:49
mobileangle
Rank: 2
等 级:论坛游民
帖 子:6
专家分:10
注 册:2010-5-26
收藏
得分:0 
多读了一下,自己读出来了——
data    segment
input     db 0ah, 0dh,  'Please input a Dioxde number:', '$'
str     db      0ah,0dh
num     db      4 dup(?),'H$'
tab     db      '0123456789ABCDEF'
data    ends
code    segment
        assume  cs:code,ds:data
begin:  mov     ax,data
        mov     ds,ax
        xor     bx,bx                            ;操作数自身异或,值不变,可使进位标志CF=0, 可以清0。速度比赋值快.还可以做位运算。
        mov     cx,10
        mov      dx, offset input
        mov      ah, 9
        int      21h
next:   mov     ah,1                            ;1号功能:按下任何键,将其对应字符的ASCII码送入AL中,并在屏幕上显示该字符
        int     21h
        cmp     al,0dh                        
        jz      conv                            ;判断al是否等于0DH,即回车键
        push    ax                                ;输入的数据压入栈中
        mov     ax,bx                            ;按数据输入的顺序,决定个、十、百、千位
        mul     cx
        mov     bx,ax
        pop     ax                                
        and     al,0fh                        ;取AL低位
        xor     ah,ah                            ;AX高位清零,这两步实现了把输入数据减去30H的功能
        add     bx,ax                            ;AX移入BX
        jmp     next                            ;在AL=0dH前一直执行NEXT循环,即按下回车键前一直输入数据
conv:   mov     ax,bx
        mov     ch,4
        lea     bx,tab
        mov     cl,4
        lea     si,num
lopa:   rol     ax,cl                            ;AX左循环四位,增大了16倍,AL值进入了AH
        push    ax
        and     ax,000fh                        ;取AX低四位
        xlat                                        ;把待查表格的一个字节内容送到AL累加器中
        mov     [si],al                        ;表格数据存放入num
        inc     si                                ;指向num下一位
        pop     ax
        dec     ch                                ;lopa循环4次后退出
        jnz     lopa
        lea     dx,str                        ;换行回车后未退出,继续打印num中数据直到$处退出
        mov     ah,9
        int     21h
        mov     ah,4ch
        int     21h
code    ends
        end     begin
2010-05-31 15:32
快速回复:请大大帮忙解读一下这个程序的BX和AX的功能
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.037065 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved