desktop

Lenguaje Asembler en Arquitectura de Computadoras

disculpe me podrian decir que hace msj# db y los demas mnemoticos solo sabia de assembler de mplab ide y no tenia idea de que habia otros y si tiene algun libro que contenga esos mnemoticos


Código:
.MODEL small
.STACK 100h

.DATA
msj1 db \'ingrese texto\',10,13,\'$\'
msj2 db 10,10,13,\'ingrese un caracter: $\'
msj3 db 10,10,13,\'el texto tiene $\'
msj4 db \' caracteres\',10,13,\'$\'
msj5 db 10,13,\'el caracter $\'
msj6 db \' aparece $\'
msj7  db \' veces, lo que representa el $\'
msj8 db \' %\',10,10,10,13,9,\'Fin\',10,13,\'$\'
chr  db ?
ntot db 255
nch  db ?
texto   db 255 dup(?)
nsi db ?
cien db 100
	
.CODE
	MOV AX,@DATA
	MOV DS,AX
uno:    lea dx,msj1
        call mostrar
        mov ah,10
        lea dx,ntot
        int 21h
        lea dx,msj2
        call mostrar
        mov ah,1
        int 21h
        mov chr,al
        lea dx,msj3
        call mostrar
        mov al,nch
        call numero
        lea dx,msj4
        call mostrar
        lea dx,msj5
        call mostrar
        mov dl,chr
        mov ah,2
        int 21h
        lea dx, msj6
        call mostrar
dos:    mov cl,nch
        xor ch,ch
        xor bx,bx
tres:   mov al,texto[bx]
        cmp al,chr
        jne cuatro
        inc ch
cuatro: inc bx
        dec cl
        jne tres
        mov al,ch
        mov nsi,al
        call  numero
        lea dx, msj7
        call mostrar
        mov al,nsi
        mul cien
        div nch              	
	call numero
	lea dx, msj8
        call mostrar
        MOV AH,4ch
	INT 21h
mostrar:
        mov ah, 9
        int 21h
        ret
        
numero:
       xor ah,ah
       div cien
       mov dx,ax
       mov ah,2
       add dl,30h
       int 21h
       mov al,dh
       aam
       mov dx,ax
       xchg dh,dl
       add dx,3030h
       mov ah,2
       int 21h
       mov dl,dh
       int 21h
       ret
               	
END.

pdta :es una tarea de pasarlo a c++ no pido eso. ...
 
Última edición por un moderador:
Estás definiendo un array del tipo data byte (db), que a la larga no es más que un string, por ej.:

Código:
msj1 db \'ingrese texto\',10,13,\'$\'

En C o C++ sería:

Código:
char* msj1="ingrese texto\n";

msj1 será la dirección del 1er elemento en memoria, al igual que ese puntero en C/C++.
 
msgX es una etiqueta para luego referirse a ello. Podría ser perico1 o mensaje1 ...
Cuando pongas msgX el ensamblador lo sustituye por esa dirección
DB es Data Byte si no me equivoco, rellena la memoria con lo que viene a continuación, un mensaje o lo que sea

¿Que microprocesador es, un z80? Da todos los datos, así no tenemos que adivinar
 
disculpe me podrian decir que hace msj# db y los demas mnemoticos solo sabia de assembler de mplab ide y no tenia idea de que habia otros y si tiene algun libro que contenga esos mnemoticos

El código está escrito en Turbo Assembler --> Libros: por ej: Turbo Assembler Bible - Gary Syck, aunque mas rápido es googlear alguna guía de Turbo Assembler.

Pero con eso solo no vas a ir muy lejos porque en el programa se hacen constantemente llamados a funciones del sistema operativo (DOS) y necesitás un listado (ej: Interrupt List de Ralf Brown)
Además estudiar como funcionaba el DOS porque si no, no vas a saber para qué están algunas instrucciones.
 
Atrás
Arriba