Pregunta

Estoy escribiendo un convertidor de números entre el (b h d) sistemas de numeración, el programa acepta 16 bits número binario, o 4 hex dígitos. o 5 decimal.

el procedimiento de lectura que he escrito parece tener un problema cuando el valor decimal es superior a 65535 (FFFFh) desde im tratar con registros de 16 bits y no puede contener valores más grandes

Le agradecería que si me ayudas.

aquí está mi proceso de lectura:

Proc R  
       mov ah,01;read first digit
   int 21h
   mov saveal,al

   cmp al,0dh; if it is a new line break then dont read
   jz toret

   mov al,radex ; the radex value already entered by user
   mov ah,0
   mul dx
   mov dx,ax; multiplies the radex by the number entered so far to shift it 1 dig.                     

   mov al,saveal
   cmp al,65
   jge big2
   sub al,30h; taking decimal value of the character

   cont2:
   call checkerror
   mov ah,0
   add dx,ax; adding the digit to the number read so far

 loop R

 toret:
 ret 
 endp

Gracias Nataly

¿Fue útil?

Solución

necesita más bits para ir por encima de 65536 (0xFFFF) por lo que necesita un registro más grande, de 32 bits, u otro registro de 16 bits. Conjunto ese otro registro de 16 bits a cero y después de su add para añadir los dígitos hasta el momento, puso un complemento con equipaje para añadir el bit de acarreo en esta siguiente registro.

Así 0xFFFF + 5, por ejemplo, es 0x10004 o 0x0004 con el conjunto de bit de acarreo, tomar este otro registro añadir el bit de acarreo a él a recoger ese otro poco, ahora tienes 0x0001 en el registro de alto orden y 0x0004 en la baja registro de orden.

Absolutamente ninguna diferencia que si tuviera que ver además con lápiz y papel. 99 + 5 = 04 con un "llevar el uno" a la posición de las centenas. Y cuando el lugar de las centenas se desborda a llevar al siguiente lugar. binario es el mismo simplemente mucho más fácil. Cada columna de bits es como una columna decimal cuando lo hace en el papel, es sólo visible desde el bit 0 al bit 15, pero el acarreo desde el bit 15 es visible para que pueda sumadores cadena juntos y hacerlos tan arbitrariamente amplia como desee.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top