Ensamblador

  0   1   2   3   4   5   6   7   8   9   10

10
  1. Hallar el valor de AX tras la instrucción div bl:
    ;------------------------------------------------------------------------------ ;Definicion del segmento de codigo ;------------------------------------------------------------------------------ CODE SEGMENT assume cs:code START PROC mov ah,1 mov al,0D7h xor bx,bx stc rcr bx,1 rcr bx,1 div bl mov ax,4C00h ; int 21h ;Terminar el programa START ENDP CODE ENDS END START
  2. De nuevo un ejercicio sencillito para dejar a un lado los exámenes (por el momento) y relajarnos un poco y ver otra forma de inicializar variables. Este programa muestra dos líneas, una llena de '5' y otra de '@':
    ;------------------------------------------------------------------------------ ;Definicion del segmento de datos ;------------------------------------------------------------------------------ DATOS SEGMENT Cadena1 db 80 dup("5"),"$" Cadena2 db 80 dup("@"),"$" DATOS ENDS ;------------------------------------------------------------------------------ ;Definicion del segmento de pila ;------------------------------------------------------------------------------ PILA SEGMENT STACK "STACK" db 40h DUP(0) PILA ENDS ;------------------------------------------------------------------------------ ;Definicion del segmento de codigo ;------------------------------------------------------------------------------ CODE SEGMENT assume cs:code,ds:datos,ss:pila START PROC ;Inicializamos los registros de segmento mov ax,datos mov ds,ax mov ax,pila mov ss,ax mov dx,offset Cadena1 mov ah,9 int 21h mov dx,offset Cadena2 mov ah,9 int 21h mov ax,4C00h ; int 21h ;Terminar el programa START ENDP CODE ENDS END START
  3. Volvemos con más instrucciones de cadena y otro ejercicio de examen. Hallar el valor de CX tras la instrucción repnz scasb:
    ;------------------------------------------------------------------------------ ;Definicion del segmento de datos ;------------------------------------------------------------------------------ DATOS SEGMENT texto db "Esto es un texto",0,"Y este otro",0 DATOS ENDS ;------------------------------------------------------------------------------ ;Definicion del segmento de pila ;------------------------------------------------------------------------------ PILA SEGMENT STACK "STACK" db 40h DUP(0) PILA ENDS ;------------------------------------------------------------------------------ ;Definicion del segmento de codigo ;------------------------------------------------------------------------------ CODE SEGMENT assume cs:code,ds:datos,ss:pila START PROC ;Inicializamos los registros de segmento mov ax,datos mov ds,ax mov ax,pila mov ss,ax push ds pop es cld mov ax,4C00h lea di,texto mov cx,14h repnz scasb mov ax,4C00h ; int 21h ;Terminar el programa START ENDP CODE ENDS END START
  4. ¿Que es lo que encuentra el programa? "to" de la palabra "Esto" "ot" de la palabra "otra"
    ;------------------------------------------------------------------------------ ;Definicion del segmento de datos ;------------------------------------------------------------------------------ DATOS SEGMENT cadena db "Esto es otra cadena" DATOS ENDS ;------------------------------------------------------------------------------ ;Definicion del segmento de pila ;------------------------------------------------------------------------------ PILA SEGMENT STACK "STACK" db 40h DUP(0) PILA ENDS ;------------------------------------------------------------------------------ ;Definicion del segmento de codigo ;------------------------------------------------------------------------------ CODE SEGMENT assume cs:code,ds:datos,ss:pila START PROC ;Inicializamos los registros de segmento mov ax,datos mov ds,ax cld mov ax,datos mov es,ax mov cx,100h mov ax,"ot" lea di,cadena repnz scasw mov ax,4C00h ; int 21h ;Terminar el programa START ENDP CODE ENDS END START
  5. Hallar el valor de AX tras la instrucción mov al,byte ptr tabla[si]:
    ;------------------------------------------------------------------------------ ;Definicion del segmento de datos ;------------------------------------------------------------------------------ DATOS SEGMENT db 10,'A',32,45h,10001101b,16 tabla dw 15,'Dk','27',4F5h DATOS ENDS ;------------------------------------------------------------------------------ ;Definicion del segmento de pila ;------------------------------------------------------------------------------ PILA SEGMENT STACK "STACK" db 40h DUP(0) PILA ENDS ;------------------------------------------------------------------------------ ;Definicion del segmento de codigo ;------------------------------------------------------------------------------ CODE SEGMENT assume cs:code,ds:datos,ss:pila START PROC ;Inicializamos los registros de segmento mov ax,datos mov ds,ax mov ax,pila mov ss,ax xor si,si mov ax,[si] sub ax,[si] mov al,byte ptr tabla[si] mov ax,4C00h ; int 21h ;Terminar el programa START ENDP CODE ENDS END START

    Espero que estos 50 programas os sirvan para entender un poco mejor la asignatura de ETC II.

    Y ya sabéis, si queréis los archivos fuente y las soluciones escribid a victorsanchez2 en gmail.com.

www.victorsanchez2.com
victorsanchez2 en gmail.com
victorsanchez2 en jabberes.org
http://www.linkedin.com/in/victorsanchez2
victorsanchez2.asc (Huella digital: 4D05 8831 CB70 5F22 D836 73FF BA0A 5C66 BBB9 AC5A)
Tf: 659 35 74 53

Valid XHTML 1.0 Transitional