回 帖 发 新 帖 刷新版面

主题:要求: 从键盘输入一个十进制数(<60000),将其转换为二进制数.

要求: 从键盘输入一个十进制数(<60000),将其转换为二进制数.
                将二进制数显示在屏幕上.
                        

            data segment
                     x db 34h ;00110100b    ;34h在内存中的存储格式为00110100b
            data ends

            code segment
                     assume cs:code,ds:data
            start:
                     mov ax,data
                     mov ds,ax

                     mov bl,byte ptr [x]   ;al<-10001010b
                      
                     mov cl,8              ;cx<-8

                     
                     
                     
            l1:      test bl,80h           ;看bl和1000000b与的最高为是否为1

                     jnz l2               ;如果不是1,则l2,输出0
                   
                     mov dl,'0'
                     mov ah,02h
                     int 21h               ;输出1
                   
                     jmp l3

            l2:      mov dl,'1'
                     mov ah,02h
                     int 21h              ;输出0



            l3:      shl bl,1           ;al逻辑左移,将次高位移动到最高位
                     
                     dec cl
                     jnz l1

                     mov ah,4ch
                     int 21h
            code ends
            end start
            该程序使用逻辑尺方法。首先将34h防入bl中;然后用逻辑左移的方法将bl的每一位移动至最高位,然后根据它和10000000与的方法查看最高位是否为1,如果是,则屏幕显示1,否则显示0。这样,屏幕上显示的是34h的二进制值00110100b

            依次类推,可以编制出类似的更多数位的程序.

回复列表 (共4个回复)

沙发

再把这个程序发一遍。

板凳

这道题为什么要那么多跳转呢,我觉得每次移一位,然后比较就行了,跳转多了我感觉可读性会很差

3 楼

谢谢,看到了,

4 楼

汗[em17]
不是说从键盘上输入数字吗?
从键盘上输入数字该怎么转换??

我来回复

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