Autor
|
Tema: Problema en ASM (IBM y compatibles) (Leído 3,925 veces)
|
Riki_89D
Desconectado
Mensajes: 851
BCN CITY
|
Hola que tal estan? Miren estoi leyendo un libro de ensamblador de 16 bits,para aprender un poco e introducimr en este "lenguaje",el caso es que e llegado a un apartado en donde se da la equivalencia de las instrucciones PUSH y POP,la de guardar valores en la pila i la de recuperarlos,pues me dan este codigo: Push AX equivale a: Creo que era asin,y la del POP me la pone aisn: Creo que era asin,el caso es que si yo ago el equivalente a push despues con la instruccion POP BX (o cualquier otro registro) por ejemplo POP BX en BX se debera agregar el valor que e guardado con el codigo primero no? por k sesupone que es equivalente a PUSH,y otra cosa yo compilo con el TASM y TLINK,i no me daj poner: pero si lo ago sin corchetes: entonces si que me deja,es lo mismo sin corchetes que con corchetes,creo que no no? por que no me deja con corchetes? ayuda porfa salu2
|
|
|
En línea
|
|
|
|
YST
Desconectado
Mensajes: 965
I'm you
|
Mas rato me bajo el TASM y lo veo Por mientras puedes usar esto mov bp,sp mov ax,[bp]
|
|
« Última modificación: 11 Octubre 2009, 18:34 pm por YST »
|
En línea
|
Yo le enseñe a Kayser a usar objetos en ASM
|
|
|
Riki_89D
Desconectado
Mensajes: 851
BCN CITY
|
Hola yst,gracias por responer,si no me equivoco este codigo que me as pasado seria el equivalente a la instruccion POP no? corrigeme si me equivoco porfavor,lo e probado i no me da ingun error parece que funciona,pero me surge una duda que aún no se resolver,como puedo mostrar por pantalla el valor actual de un registro? igual que podemos mostrar caracteres direccionando el segmento de datos,pues como ago para poder mostrar valores de los registros por pantalla?
salu2
|
|
|
En línea
|
|
|
|
|
Riki_89D
Desconectado
Mensajes: 851
BCN CITY
|
COMO CONVIERTO LOS TIPOS STRING A INTEGER?
es verdad me faltaria incrementar SP
saludos
|
|
|
En línea
|
|
|
|
YST
Desconectado
Mensajes: 965
I'm you
|
COMO CONVIERTO LOS TIPOS STRING A INTEGER?
es verdad me faltaria incrementar SP
saludos
Para pasar el numero a ascii te tendrias que hacer una funcion que lo hiciera PD: Lo de interger a string es solo una manera de decirlo ya que en ASM no existen EDIT : El codigo quedaria algo a si org 100h mov dx,8 call WordToString mov ah,09 mov dx,lb2 int 21h int 20h ContarCantidad: mov di,ax mov si,0 .bucle: xor dx,dx mov bx,10 div bx inc si cmp ax,0 jne .bucle ;dec si ret ;Le pasas el word por DX ;) WordToString: cmp dx,10 jle .UnoSolo push dx mov ax,dx call ContarCantidad pop dx mov cx,-1 mov word[Cantidad],si sub [Cantidad],2 .bucle: push dx dec si inc cx mov bx,1 mov dx,si .Elevar: dec dx imul bx,10 cmp dx,0 jne .Elevar pop dx push dx mov ax,dx xor dx,dx div bx pop dx mov di,lb2 add di,cx mov byte[di],al add byte[di],'0' imul ax,bx sub dx,ax cmp [Cantidad],cx jne .bucle add dl ,'0' mov di,lb2 add di,cx mov byte[di+1],dl .salir: ret .UnoSolo: mov di,lb2 add dl,'0' mov byte[di],dl jmp .salir Cantidad dw ? lb2 db 200 dup ('$')
|
|
« Última modificación: 11 Octubre 2009, 23:59 pm por YST »
|
En línea
|
Yo le enseñe a Kayser a usar objetos en ASM
|
|
|
|
|