4
;Nombre y apellido :Daniela Angelica Ticona ;carnet de Identidad: 4847741 LP ;Materia : Assembler inf-153 Data segment labelc db "UNIVERSIDAD MAYOR DE SAN ANDRES$" LABELD DB "FACULTAD DE CIENCIAS PURAS Y NATURALES$" LABELE DB "MATERIA: ASSEMBLER INF-153 $" labelb DB "*-*-*-*-*-*-*-*-*- *-*-*-*-* $" label1 DB "*Selecciona una operacion * $" label2 DB "* 1.- Suma * $" label3 DB "* 2.- Resta * $" label4 DB "* 3.- Multiplicacion *$" label5 DB "* 4.- Division *$" labela db "* 5.- Serie cuadratica * $" label6 DB "* 6.- Salir *$" label7 DB "Ingrese una opcion $" label8 DB "Ingrese numero $" label9 DB "El resultado es $" label10 DB "error no divisible entre 0 $" label11 DB "`cociente $" label12 DB "residuo $" resultado DB 0 cociente DB 0 residuo DB 0 numero DB 0 signox DB 0 r2 DB ? ac DB 0 cad db 'Ingrese numero: $' enter db 10,13,'$' num db 8 dup('$') Data ends pila segment stack DW 256 DUP (?) pila ends code segment menu proc far assume cs:code,ds:data,ss:pila push ds xor ax,ax push ax mov ax,data mov ds,ax xor dx,dx mov ah,09h mov dx,offset labelC int 21h mov ah,02h mov dl,10 int 21h mov ah,02h mov dl,13 int 21h mov ah,09h mov dx,offset labelD int 21h mov ah,02h mov dl,10 int 21h mov ah,02h mov dl,13 int 21h mov ah,09h mov dx,offset labelE int 21h mov ah,02h mov dl,10 int 21h mov ah,02h mov dl,13 int 21h ;interlineado mov ah,02h mov dl,10 int 21h mov ah,02h mov dl,13 int 21h ;interlineado mov ah,09h mov dx,offset labelb int 21h ;imprime seleccion de menu mov ah,02h mov dl,10 int 21h mov ah,02h mov dl,13 int 21h mov ah,09h mov dx,offset label1 int 21h mov ah,02h mov dl,10 int 21h mov ah,02h mov dl,13 int 21h mov ah,09h mov dx,offset labelb int 21h ;interlineado mov ah,02h mov dl,10 int 21h mov ah,02h mov dl,13 int 21h mov ah,09h mov dx,offset label2 int 21h mov ah,02h mov dl,10 int 21h mov ah,02h mov dl,13 int 21h mov ah,09h mov dx,offset label3 int 21h mov ah,02h mov dl,10 int 21h mov ah,02h mov dl,13 int 21h mov ah,09h mov dx,offset label4 int 21h mov ah,02h mov dl,10 int 21h mov ah,02h mov dl,13 int 21h mov ah,09h mov dx,offset label5 int 21h

CODIGO

Embed Size (px)

DESCRIPTION

assembler

Citation preview

Page 1: CODIGO

;Nombre y apellido :Daniela Angelica Ticona;carnet de Identidad: 4847741 LP;Materia : Assembler inf-153

Data segment labelc db "UNIVERSIDAD MAYOR DE SAN ANDRES$" LABELD DB "FACULTAD DE CIENCIAS PURAS Y NATURALES$" LABELE DB "MATERIA: ASSEMBLER INF-153 $" labelb DB "*-*-*-*-*-*-*-*-*-*-*-*-*-* $" label1 DB "*Selecciona una operacion * $" label2 DB "* 1.- Suma * $" label3 DB "* 2.- Resta * $" label4 DB "* 3.- Multiplicacion *$" label5 DB "* 4.- Division *$" labela db "* 5.- Serie cuadratica * $" label6 DB "* 6.- Salir *$" label7 DB "Ingrese una opcion $" label8 DB "Ingrese numero $" label9 DB "El resultado es $" label10 DB "error no divisible entre 0 $" label11 DB "`cociente $" label12 DB "residuo $" resultado DB 0 cociente DB 0 residuo DB 0 numero DB 0 signox DB 0 r2 DB ? ac DB 0 cad db 'Ingrese numero: $'

enter db 10,13,'$'num db 8 dup('$')

Data ends

pila segment stack DW 256 DUP (?)

pila ends code segment

menu proc far assume cs:code,ds:data,ss:pila push ds xor ax,ax push ax mov ax,data mov ds,ax xor dx,dx mov ah,09h

mov dx,offset labelC int 21h mov ah,02h mov dl,10 int 21h mov ah,02h mov dl,13 int 21h mov ah,09h mov dx,offset labelD int 21h mov ah,02h mov dl,10 int 21h mov ah,02h

mov dl,13 int 21h mov ah,09h mov dx,offset labelE int 21h mov ah,02h mov dl,10 int 21h mov ah,02h mov dl,13 int 21h ;interlineado mov ah,02h mov dl,10 int 21h mov ah,02h mov dl,13 int 21h ;interlineado

mov ah,09h mov dx,offset labelb int 21h ;imprime seleccion de menu mov ah,02h mov dl,10 int 21h mov ah,02h mov dl,13 int 21h mov ah,09h mov dx,offset label1 int 21h mov ah,02h mov dl,10 int 21h mov ah,02h mov dl,13 int 21h mov ah,09h mov dx,offset labelb int 21h ;interlineado mov ah,02h mov dl,10 int 21h mov ah,02h mov dl,13 int 21h mov ah,09h mov dx,offset label2 int 21h mov ah,02h mov dl,10 int 21h mov ah,02h mov dl,13 int 21h mov ah,09h

mov dx,offset label3 int 21h mov ah,02h mov dl,10 int 21h mov ah,02h mov dl,13 int 21h mov ah,09h mov dx,offset label4 int 21h mov ah,02h mov dl,10 int 21h mov ah,02h mov dl,13 int 21h mov ah,09h mov dx,offset label5 int 21h mov ah,02h mov dl,10 int 21h mov ah,02h mov dl,13 int 21h mov ah,09h mov dx,offset labela int 21h mov ah,02h mov dl,10 int 21h mov ah,02h mov dl,13 int 21h mov ah,09h mov dx,offset label6 int 21h mov ah,02h mov dl,10 int 21h mov ah,02h mov dl,13 int 21h mov ah,09h mov dx,offset labelb int 21h mov ah,02h mov dl,10 int 21h mov ah,02h mov dl,13 int 21h mov ah,02h mov dl,10 int 21h mov ah,02h mov dl,13 int 21h

Page 2: CODIGO

mov ah,09h mov dx,offset label7 int 21h ;lee teclado mov ah,01h int 21h ;ajunstando el teclado xor ah,ah sub al,30h mov cx,2 ;verificando opcion cmp al,1 jz suma ;se dirige al metodo suma cmp al,2 jz resta ;se dirige al metodo resta

cmp al,3 jz mult ;se dirige al metodo multiplik cmp al,4 jz divi ;se dirige al metodo dividir cmp al,5 jz cuad ;se dirige al metodo serie cuadratica cmp al,6 jz fin suma: mov ah,02h mov dl,10 int 21h mov ah,02h mov dl,13 int 21h mov ah,09h mov dx,offset label8 int 21h ;lee teclado mov ah,01h int 21h ;verificando si es negativo cmp al,2dh je signo ;ajusta teclado sub al,30h add resultado,al jmp return1

signo: mov ah,01h int 21h sub al,30h neg al add resultado,al je return1 return1: loop suma

imp1: cmp resultado,00 jl imp2 ;interlineado

mov ah,02h mov dl,10 int 21h mov ah,02h mov dl,13 int 21h mov AH,09H mov DX,OFFSET label9 int 21H jmp imprime imp2: neg resultado ;interlineado mov ah,02h mov dl,10 int 21h mov ah,02h mov dl,13 int 21h mov AH,09H mov DX,OFFSET label9 int 21H mov ah,02h mov dl,'-' int 21h jmp imprime imprime:

MOV AH,0 MOV AL,resultado MOV CL,10 DIV CL ADD AL,30H ADD AH,30H; CONVIRTIENDO A DECIMAL MOV BL,AH MOV DL,AL MOV AH,02H;IMPRIME LA DECENA INT 21H MOV DL,BL MOV AH,02H INT 21H;IMPRIME LA UNIDAD mov cx,2 jmp menuresta: mov ah,02h mov dl,10 int 21h mov ah,02h mov dl,13 int 21h mov ah,09h mov dx,offset label8 int 21h ;lee teclado mov ah,01h int 21h ;verificando si es negativo cmp al,2dh je signor ;ajusta teclado sub al,30h cmp cx,2

je etiqueta1 sub resultado,al jmp return2etiqueta1: mov resultado,al jmp return2 signor: mov ah,01h int 21h sub al,30h neg al cmp cx,2 je etiqueta1 sub resultado,al je return2

return2: loop resta jmp imp1 mult: mov ah,02h mov dl,10 int 21h mov ah,02h mov dl,13 int 21h mov ah,09h mov dx,offset label8 int 21h ;lee teclado mov ah,01h int 21h ;verificando si es negativo cmp al,2dh je signom sub al,30h cmp cx,2 je etiqueta2 mov ah,0 mul resultado jmp return3etiqueta2: mov resultado,al jmp return3signom: mov ah,01h int 21h sub al,30h neg al cmp cx,2 je etiqueta2 mov ah,0 mul resultado jmp return3return3:loop mult mov resultado,al jmp imp1

mov signox,0

cuad: ;imprimir_cad cad

mov ah,02h mov dl,10 int 21h mov ah,02h mov dl,13 int 21h mov ah,09h mov dx,offset cad

Page 3: CODIGO

int 21h

mov ah,02h mov dl,10 int 21h mov ah,02h mov dl,13 int 21h mov ah,09h mov dx,offset enter int 21h

call leernummov cx,axmov si,1

mov ah,02h mov dl,10 int 21h mov ah,02h mov dl,13 int 21h mov ah,09h mov dx,offset enter int 21h

f1:

call cuadradopush simov si,axcall convertirnumpop si;imprimir_cad nummov ah,02h

mov dl,10 int 21h mov ah,02h mov dl,13 int 21h mov ah,09h mov dx,offset num int 21h

inc siloop f1

;-------------------------------------mov ah,4chjmp menu

divi: mov ah,02h mov dl,10 int 21h mov ah,02h mov dl,13 int 21h mov ah,09h mov dx,offset label8 int 21h ;lee teclado mov ah,01h int 21h ;verificando si es negativo cmp al,2dh je signod

sub al,30h cmp cx,2 je etiqueta3 cmp al,0 je falla mov ah,0 mov numero,al mov al,resultado div numero jmp return4

etiqueta3: mov resultado,al jmp return4signod: mov ah,01 int 21h sub al,30h inc signox cmp cx,2 je etiqueta3 mov ah,0 mov numero,al mov al,resultado div numero jmp return4

return4:loop divi mov cociente,al mov residuo,ah mov resultado,al jmp imp3falla: mov ah,9 mov dx, offset label10 int 21h jmp diviimp3: mov ah,02h mov dl,10 int 21h mov ah,02h mov dl,13 int 21h mov AH,09H mov DX,OFFSET label9 int 21H jmp imprimedivi

imprimedivi: MOV AL,resultado MOV CH,30H ADD AL,CH ADD AH,CH MOV BL,AH MOV AH,9 MOV DX,OFFSET label11 INT 21H cmp signox,1 jz cambio jmp termina cambio: mov dl,"-"

mov ah,02h int 21h mov signox,0

termina: MOV DX,0 ADD cociente,30H MOV DL,cociente MOV AH,02H ;IMPRIME EL COCIENTE INT 21H MOV AH,9 MOV DX,OFFSET label12 INT 21H MOV DX,0 ADD residuo,30H MOV DL,residuo MOV AH,02H ;IMPRIME EL RESIDUO INT 21H jmp menu fin: ret

menu endp

leernum procpush bxpush cxpush dxmov ax,0mov bx,10mov cx,0c1:push axmov ah,01hint 21hcmp al,13je fin1sub al,30hmov cl,alpop axmul bxadd ax,cxjmp c1fin1:pop axpop dxpop cxpop bxret

leernum endp

convertirnum procpush cxpush sipush dxpush bxpush axmov ax,simov bx,10mov cx,0mov dx,0mov si,0dig:div bxpush dxmov dx,0inc cxcmp ax,0je convjmp dig

Page 4: CODIGO

conv:pop dxadd dl,30hmov num[si],dl

inc siloop convmov num[si],' 'pop axpop bxpop dxpop sipop cxret

convertirnum endp

cuadrado proc

push sipush dxpush bxmov ax,simov bx,si

mul bx

pop bxpop dxpop siret

cuadrado endp

code endsend menu