项目作者: MitchAguilar

项目描述 :
Curso Assembly
高级语言: Assembly
项目地址: git://github.com/MitchAguilar/AssemblyAndC.git
创建时间: 2017-11-12T08:17:50Z
项目社区:https://github.com/MitchAguilar/AssemblyAndC

开源协议:MIT License

下载


Assembly

Bienvenido/a

En el momento de crear éstos programas en Assembly, fue necesario el uso de un SO de derivación GNU/linux, es éste caso ( Linux mint ), no con ello queriendo dictar un SO específico para correrlos; sin embargo los SO de derivación GNU/linux evitan el uso de una VM para e enlace con el compilador NASM, usado en la compilación de éstos programas, y que en Windows es necesaria.

Ilustración

ils

> 1.- Hola Mundo

  1. section .data
  2. msg db "hola mundo!!!",0xA,0xD
  3. len equ $ - msg
  4. section .text
  5. global _start
  6. _start:
  7. mov eax, 4 ; llamda al sistema(sys_ write)
  8. ;eax= 4
  9. mov ebx, 1 ;stout
  10. mov ecx, msg ;msm _salid
  11. mov edx, len ; longitud msg
  12. int 0x80 ; interruccion, llamada al sistema de interruciones
  13. mov eax, 1 ;exit
  14. int 0x80 ; interruccion invocada
  1. El archivo contenido, explica la arquitectura de 32 bits, para la ejecución de programas en asm.
  2. #Teoría de asm.
  3. //pendiente redacción
  4. #Comandos
  5. sudo apt-get install nasm | Instalación del compilador nasm para asm
  6. nasm -f elf Holamundo.asm | Pasar el archivo asm por el compilador de asm, que genera el .o para enviar al enlazador
  7. ld -m elf_i386 -s -o Holamundo Holamundo.o | Modo de enlace para registros de 32 bits= elf_i386
  8. ./Holamundo | Ejecución del programa compilado

Enlace del doc.mitch

> 2.- Automatizando El Ensamblado

  1. Este documento contiene las rutas para omitir el proceso de terminal para enlazar y compilar un programa ams
  2. #Teoría de asm.
  3. / Radica en el uso de sublime text para mediante ctrl+b poder enlazar y compilar archivos asm
  4. #Comandos
  5. {"cmd": ["~/run.sh ${file} ${file_base_name}"],"shell": true} |Comando de ejecución para sublime
  6. REF// run.sh |Comando bash para el proceso
  7. #Precaución
  8. /Eliminar los espacios de las rutas, interfieren en la secuencia de la bash

Enlace del doc.mitch

> 3.- Masm Y Tasm

  1. ;masa
  2. .model small; definiendo el tipo de model, corto (64 kb)
  3. .data ; se definen las variables que se van a ocupar, es el segmento de los datos
  4. mensaje db 'hola, soy mitch$'; ya no necesitamos colocar la longitud del mensaje
  5. .code
  6. empieza:;definimos el comienzo del cuerpo del programa, el body
  7. mov ax,@data ;movemos el registro dx, los datos a auxiliar
  8. mov ds,ax
  9. ;en ah siempre se cargan las funciones, en este caso 09h, permite desplegar un mensaje en pantalla
  10. mov ah,09h; 0x9 la misma instruccion
  11. mov dx,offset mensaje; movemos el resgistro dx al contenido del mensaje
  12. ; se llama a la interrupcion 21h
  13. int 21h
  14. ;terminamos el programa
  15. mov ax,4c00h
  16. int 21h
  17. .stack;segmento de pila
  18. end empieza;termina el segmento definido como empieza
  19. ;--------------------Microsoft Assembly----------------------------
  1. ;turbo asm o tasm
  2. .model small; declaramos el modelo de memoria (64kb)
  3. .stack
  4. .data
  5. mensaje dB 'Hola, soy mitch','$';mensaje, termina con caracter
  6. .code
  7. inicio:;segmento del programa, el linker del enlazador
  8. mov ax, @data
  9. mov ds, ax
  10. lea dx, mensaje
  11. mov ah, 09h
  12. int 21h; misma nterrucion
  13. mov ah,4ch
  14. int 21h
  15. end inicio
  16. ;--------------------Retrocompatibilidad con Microsoft Assembly----------------------------
  1. Este documento contiene las aclaraciones a tener en cuenta respecto a los compiladores masm y tasm
  2. #Teoría de asm.
  3. / Radica en el hecho de que son compiladores para el Ms Dos, son nativos de Microsoft en el caso del masm, y el tasm es compatible
  4. #Comandos
  5. REF// Tasm.asm |Codigo para dicho compilador
  6. REF// Masm.asm |Codigo para dicho compilador
  7. #Precaución
  8. /A pesar de sus diferencias, en retrospectiva son basicamente iguales.

Enlace del doc.mitch

LICENSE ®
"License"