Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 十六进制到十进制打印问题?_Performance_Assembly_Printing_Hex_Decimal - Fatal编程技术网

Performance 十六进制到十进制打印问题?

Performance 十六进制到十进制打印问题?,performance,assembly,printing,hex,decimal,Performance,Assembly,Printing,Hex,Decimal,我的实际问题是打印不符合我的要求我不知道原因,这是我的代码: ; multi-segment executable file template. data segment ; add your data here! M1 db "Enter a number from below for the convarting you want to make.. ",0ah,0dh,"1 - Hex to Decimal & Binary ",0ah,0dh,"2 - Deci

我的实际问题是打印不符合我的要求我不知道原因,这是我的代码:

; multi-segment executable file template.

data segment
    ; add your data here!
    M1 db "Enter a number from below for the convarting you want to make.. ",0ah,0dh,"1 - Hex to Decimal & Binary ",0ah,0dh,"2 - Decimal to Hex & Binary",0ah,0dh,"3 - Binary to Hex & Decimal",0ah,0dh,"$",0ah,0dh 
    V  db 0ah,0dh,"Enter the digits you want to convert",0ah,0dh,"$",0ah,0dh
    E  db 0ah,0dh,"You have entered a wrong hex digit/s",0ah,0dh,"$"
    S  db 0ah,0dh,"$"                                                
    Bu dw 0 
    Bu1 dw 0
    Bu2 dw 0
    Bu3 dw 0
    cdec dw 0
    result dw '00000', 0 
    result1 dw '0000000000000000',0
    data1 dw 0


ends

stack segment
    dw   128  dup(0)
ends

code segment
start:
; set segment registers:
    mov ax, data
    mov ds, ax
    mov es, ax

    ; add your code here

    lea dx, M1
    mov ah, 9
    int 21h        ; output string at ds:dx

    ; wait for any key....    
    mov ah, 1
    int 21h 

    CMP al,'1'
    JE C1
    CMP al,'2'
    ;JE C2  
    CMP al,'3'
    ;JE C3

    jmp start

    C1:  lea dx, V
         mov ah, 9
         int 21h

        pusha

        mov cx,4
        mov ah,1

        Enter: int 21h
        xor bx,bx
        mov bl,al
        push bx

        loop Enter

        pop bx

        jmp check 


     h: mov Bu,bx

        pop bx 

        jmp check1 

     h1: mov ax,16
         mul bx
         mov Bu1,ax


        pop bx 

        jmp check2 

     h2: mov ax,256
         mul bx
         mov Bu2,ax


        pop bx 

        jmp check3

     h3: mov ax,4096
         mul bx

         mov Bu3,ax


         xor dx,dx
         xor ax,ax

         add dx,Bu

         add dx,Bu1

         add dx,Bu2

         add dx,Bu3

         mov cdec,dx

         lea dx,S
         mov ah,9
         int 21h 

           popa 

         jmp decimal       

            check:

        cmp bx,"0"
        je  De
        cmp bx,"1"
        je  De
        cmp bx,"2"
        je  De
        cmp bx,"3"
        je  De
        cmp bx,"4"
        je  De
        cmp bx,"5"
        je  De
        cmp bx,"6"
        je  De
        cmp bx,"7"
        je  De
        cmp bx,"8"
        je  De
        cmp bx,"9"
        je  De

        or bx, 0000000000100000b

        cmp bx,"a"
        je AA

        cmp bx,"b"
        je AA

        cmp bx,"c"
        je AA

        cmp bx,"d"
        je AA

        cmp bx,"e"
        je AA

        cmp bx,"f"
        je AA

        jmp error


  AA: sub bx,57h      

   jmp h

  De: sub bx,30h

   jmp h


            check1:  
        cmp bx,"0"
        je  De1
        cmp bx,"1"
        je  De1
        cmp bx,"2"
        je  De1
        cmp bx,"3"
        je  De1
        cmp bx,"4"
        je  De1
        cmp bx,"5"
        je  De1
        cmp bx,"6"
        je  De1
        cmp bx,"7"
        je  De1
        cmp bx,"8"
        je  De1
        cmp bx,"9"
        je  De1

        or bx, 0000000000100000b

        cmp bx,"a"
        je AA1

        cmp bx,"b"
        je AA1

        cmp bx,"c"
        je AA1

        cmp bx,"d"
        je AA1

        cmp bx,"e"
        je AA1

        cmp bx,"f"
        je AA1

        jmp error


  AA1: sub bx,57h      

   jmp h1

  De1: sub bx,30h

   jmp h1      
        jmp error



              check2:  
        cmp bx,"0"
        je  De2
        cmp bx,"1"
        je  De2
        cmp bx,"2"
        je  De2
        cmp bx,"3"
        je  De2
        cmp bx,"4"
        je  De2
        cmp bx,"5"
        je  De2
        cmp bx,"6"
        je  De2
        cmp bx,"7"
        je  De2
        cmp bx,"8"
        je  De2
        cmp bx,"9"
        je  De2

        or bx, 0000000000100000b

        cmp bx,"a"
        je AA2

        cmp bx,"b"
        je AA2

        cmp bx,"c"
        je AA2

        cmp bx,"d"
        je AA2

        cmp bx,"e"
        je AA2

        cmp bx,"f"
        je AA2

        jmp error


  AA2: sub bx,57h      

   jmp h2

  De2: sub bx,30h

   jmp h2


               check3:  
        cmp bx,"0"
        je  De3
        cmp bx,"1"
        je  De3
        cmp bx,"2"
        je  De3
        cmp bx,"3"
        je  De3
        cmp bx,"4"
        je  De3
        cmp bx,"5"
        je  De3
        cmp bx,"6"
        je  De3
        cmp bx,"7"
        je  De3
        cmp bx,"8"
        je  De3
        cmp bx,"9"
        je  De3

        or bx, 0000000000100000b

        cmp bx,"a"
        je AA3

        cmp bx,"b"
        je AA3

        cmp bx,"c"
        je AA3

        cmp bx,"d"
        je AA3

        cmp bx,"e"
        je AA3

        cmp bx,"f"
        je AA3

        jmp error


  AA3: sub bx,57h      

   jmp h3

  De3: sub bx,30h

   jmp h3 

decimal:   

    mov di,5

  con1:

cmp cdec,0
jz print 


mov ax, cdec
mov bx,10
cwd
idiv bx  
mov result[di],dx
add result1[di], 30h

xor dx,dx
mov cdec,ax

dec di   
jmp con1


print:

mov cx,5  

mov di,0

next:

lea dx,result[di]

mov ah,9
int 21h

inc di 
loop next

 mov dl,'h'
         mov ah,2
         int 21h

         jmp Cb1

Cb1:

xor ax,ax

mov di,5

mov ax,result[di]

add data1,ax

xor ax,ax

mov di,4

mov ax,result[di]
mov bx,10
mul bx

add data1,ax

xor ax,ax

mov di,3

mov ax,result[di]
mov bx,100
mul bx

add data1,ax

xor ax,ax

mov di,2

mov ax,result[di]
mov bx,1000
mul bx

add data1,ax

xor ax,ax

mov di,1

mov ax,result[di]
mov bx,10000
mul bx

add data1,ax   

mov cx,16

mov ax,data1

mov di,
m:

cmp data1, 0
je stop

mov ax, data1
mov bl, 2
div bl  
mov result1[di], ah
add result1[di], 30h  

xor ah, ah
mov data1, ax

dec di   
jmp m 

stop:

mov bx, w.temp
mov cx, 16
print: mov ah, 2    
       mov dl, '0'
       test bx, 1000000000000000b  
       jz zero
       mov dl, '1'
zero:  int 21h
       shl bx, 1
loo print



  e error: lea dx, E
         mov ah, 9
         int 21h

         jmp C1

    exit:


    mov ax, 4c00h ; exit to operating system.
    int 21h    
ends

end start ; set entry point and stop the assembler.

哦,代码很难读懂,因为它不是很短,而且有些部分的格式不适合在这里显示。所以我不喜欢看完整的清单

但是我已经编写了一些DOS应用程序来转换这些值。说明内和说明后的注释用德语书写。但是程序很小,并且分成了一些部分

zip archiv包括源代码和以下文件的可执行文件: DEZ2BIT.ASM DEZ2HEX.ASM HEX2BIT.ASM HEX2DEZ.ASM

要转换的值必须作为参数添加到可执行文件的名称后面。
示例:HEX2DEZ.exe十六进制值,从0到FFFFFFFF最大值为32位。

如何构建它?我计算了17个错误,这些错误阻止了TASM成功地组装它。请阅读:。