Páginas: [1]
|
 |
|
Autor
|
Tema: Ensamblador as86 (Leído 235 veces)
|
|
germandc
|
Buenas, tengo una pregunta, yo estoy aprendiendo a programar en ensamblador y habia arrancado con TASM, pero un codigo que encontre esta en as86 y cuando trato de pasarlo a TASM, algunas partes no me andan. El codigo es este: entry start start: mov ax,#0xb800 mov es,ax seg es mov seg es mov [1],#0x1f loop1: jmp loop1 -------------------------- LOC1=0x500 entry start start: mov ax,#LOC1 mov es,ax mov bx,#0 mov dl,#0 mov dh,#0 mov ch,#0 mov cl,#2 mov al,#1 mov ah,#2 int 0x13 jmpi 0,#LOC1 Si alguien me podria hacer el favor de modificarlos para que compile con TASM le agradeceria, ya que no me sale. Gracias, Chau
|
|
|
|
|
En línea
|
|
|
|
Meta
Desconectado
Mensajes: 943
|
Si pierdes el tiempo con asm, piérdelo con los PIC.
|
|
|
|
|
En línea
|
Meta Shell, VERSIÓN 1.2.2, Hecho con Visual C# .net Express (Gratuito) Descargar
|
|
|
Eternal Idol N&P
Desconectado
Mensajes: 1.288
Assembly (x86/x64), C/C++, Kernel Mode (WDM/WDF)
|
¿Sabes para que es eso y como usarlo? Son dos binarios diferentes, el segundo actua como cargador del primero - mediante el servicio 2h de la interrupcion 13h - y tienen que estar escritos en el primer y segundo sector - de un diskette - respectivamente para funcionar. http://www.ctyme.com/intr/rb-0607.htmEl segundo programa manda cargar un sector (al=1,cl=2) en memoria (es:bx=0500h:0000h) y salta a esa direccion de memoria dando paso al codigo del primer binario. El primero lo unico que hace es escribir el caracter 'A' (41h) directamente en el area de memoria de video (B800) con un estilo especifico (1Fh, letra amarilla blanca fondo azul). Despues salta indefinidamente sobre la etiqueta loop1. http://www.xs4all.nl/~smit/asm02001.htm¿Todavia te interesa esto? Yo NO uso TASM sino MASM pero segun creo recordar TASM soporta la sintaxis de MASM. ¿Que problemas tenes especificamente para ensamblar? El jmp final del segundo binario puede ser uno de ellos - MASM no permite hacer saltos con gran libertad -, asi lo podes solucionar: goLoaded equ DB 0EAh, 0h, 0h, 0h, 05h goLoaded ;jmp 0500h:0000h
El resto del segundo binario es bastante simple de adaptar, cambiando la notacion hexadecimal alcanza. Para el primero podes usar algo asi por ejemplo: xor bx, bx mov byte ptr es:[bx], 041h inc bx mov byte ptr es:[bx], 01fh
Lo demas no deberia dar ningun error y finalmente como te dije antes tenes que escribirlos en un diskette (el primer binario en el segundo sector y el segundo en el primero). PD. Como siempre un gran aporte el tuyo Meta.
|
|
|
|
« Última modificación: 16 Marzo 2008, 22:55 por Eternal Idol »
|
En línea
|
be closely tied to (v.) = estar estrechamente ligado a Ex: He had been wrapped up in a new project that was closely tied to the company's new growth.
"La economia nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de este" Juan Domingo Peron
|
|
|
|
germandc
|
Holas, gracias Eternal Idol por la ayuda ya lo compile y funciono bien, voy a tratar de seguir aprendiendo un poco de ASM. Meta, muy complicado eso por el momento, recien toy empezando con ASM.
CHAU Y GRACIAS POR LA AYUDA.
|
|
|
|
|
En línea
|
|
|
|
Eternal Idol N&P
Desconectado
Mensajes: 1.288
Assembly (x86/x64), C/C++, Kernel Mode (WDM/WDF)
|
De nadas 
|
|
|
|
|
En línea
|
be closely tied to (v.) = estar estrechamente ligado a Ex: He had been wrapped up in a new project that was closely tied to the company's new growth.
"La economia nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de este" Juan Domingo Peron
|
|
|
|
Páginas: [1]
|
|
|
|