Ensamblador

  0   1   2   3   4   5   6   7   8   9   10

7 Las soluciones y archivos fuente de todos los ejercicios podéis obtenerlos escribiéndome un e-mail para pedírmelos.
  1. Hallar el valor de AX tras la instrucción "mov ax,[bp+1]":
    ;------------------------------------------------------------------------------ ;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,ss:pila START PROC ;Inicializamos los registros de segmento mov ax,pila mov ss,ax mov cx,37FFh xor bx,bx push cx push bx mov bp,sp mov ax,[bp+1] mov ax,4C00h ; int 21h ;Terminar el programa START ENDP CODE ENDS END START
  2. Hallar el valor de AX tras la instrucción "mov ax,[bp+1]":
    ;------------------------------------------------------------------------------ ;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,ss:pila START PROC ;Inicializamos los registros de segmento mov ax,pila mov ss,ax mov ax,3759h xor bx,bx push ax push bx mov bp,sp mov ax,[bp+1] mov ax,4C00h ; int 21h ;Terminar el programa START ENDP CODE ENDS END START
  3. Hallar el valor de AX tras la instrucción "stosb":
    ;------------------------------------------------------------------------------ ;Definicion del segmento de pila ;------------------------------------------------------------------------------ PILA SEGMENT STACK "STACK" db 40h DUP(0) PILA ENDS ;------------------------------------------------------------------------------ ;Definicion del segmento extra ;------------------------------------------------------------------------------ EXTRA SEGMENT RESULT DW 0,0 EXTRA ENDS ;------------------------------------------------------------------------------ ;Definicion del segmento de codigo ;------------------------------------------------------------------------------ CODE SEGMENT assume CS:code,ES:extra,SS:pila ;------------------------------------------------------------------------------ ; Procedimiento inicial ;------------------------------------------------------------------------------ START PROC mov si,40h cld mov byte ptr ds:[si],0Fh xor cx,cx mov al,0F0h rep scasb std mov di,si mov bx,ds mov es,bx stosb mov ax,4C00h ; int 21h ;Terminar el programa START ENDP CODE ENDS END START
  4. Hallar el valor de AX tras la instrucción "rep lodsw":
    ;------------------------------------------------------------------------------ ;Definicion del segmento de datos ;------------------------------------------------------------------------------ DATOS SEGMENT texto db "Cadena_de_texto" 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 si,offset texto cld mov cx,5 rep lodsw mov ax,4C00h ; int 21h ;Terminar el programa START ENDP CODE ENDS END START
  5. Otro ejercicio como el anterior:
    ;------------------------------------------------------------------------------ ;Definicion del segmento de datos ;------------------------------------------------------------------------------ DATOS SEGMENT texto db "Esto_es_una_cadena_de_texto",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 mov si,offset texto add si,19h std mov cx,5 rep lodsw mov ax,4C00h ; int 21h ;Terminar el programa START ENDP CODE ENDS END START
  6. Y otro más. Las instrucciones de cadena son bastante potentes y como podreis ver es mejor saber manejarlas con soltura:
    ;------------------------------------------------------------------------------ ;Definicion del segmento de datos ;------------------------------------------------------------------------------ DATOS SEGMENT texto db "Cadena_de_texto" 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 si,offset texto add si,0Dh std mov cx,5 rep lodsw mov ax,4C00h ; int 21h ;Terminar el programa START ENDP CODE ENDS END START
  7. Hallar el valor de AX tras salir del bucle:
    ;------------------------------------------------------------------------------ ;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,ss:pila START PROC ;Inicializamos los registros de segmento mov ax,pila mov ss,ax mov bx,10h xor ax,ax mov cx,0FFFFh L1: add ax,bx loop L1 mov ax,4C00h ; int 21h ;Terminar el programa START ENDP CODE ENDS END START

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