Programa
que suma dos números enteros de 8 bits sin signo situados en memoria y almacena
el resultado en memoria.
; multi-segment executable file template.
data segment
; add your
data here!
Num1 DB 20h
Num2 DB 30h
Res DB ?
pkey db
"press any key...$"
ends
stack segment
dw 128
dup(0)
ends
code segment
start:
; set segment registers:
mov ax, data
mov ds, ax
mov es, ax
; add your
code here
mov AL,Num1
add AL,Num2
mov Res,AL
lea dx, pkey
mov ah, 9
int 21h ; output string at ds:dx
; wait for
any key....
mov ah, 1
int 21h
mov ax,
4c00h ; exit to operating system.
int 21h
ends
end start ; set entry point and stop the assembler.
2.
Programa
que suma dos números enteros de 16 bits sin signo situados en memoria y
almacena el resultado en memoria.
; multi-segment executable file template.
data segment
; add your
data here!
Num1 DW 50h
Num2 DW 20h
Res DW ?
pkey db
"press any key...$"
ends
stack segment
dw 128
dup(0)
ends
code segment
start:
; set segment registers:
mov ax, data
mov ds, ax
mov es, ax
; add your
code here
mov Ax,Num1
add Ax,Num2
mov Res,Ax
lea dx, pkey
mov ah, 9
int 21h ; output string at ds:dx
; wait for
any key....
mov ah, 1
int 21h
mov ax,
4c00h ; exit to operating system.
int 21h
ends
end start ; set entry point and stop the assembler.
3.
Programa
que suma dos números enteros de 32 bits sin signo situados en memoria y
almacena el resultado en memoria. El programa se hará con las dos variantes
siguientes:
• Declarando
cada dato como una tabla de dos palabras, por ejemplo, Sumando1 DW 1235h,4565h
y acceder a cada palabra utilizando la dirección más un índice. Por ejemplo,
Sumando1 para la primera palabra del dato y Sumando1+2 para la segunda.
; multi-segment executable file template.
data segment
; add your
data here!
sumando1 DW 1235h,4565h
Res DW ?
pkey db "press any key...$"
ends
stack segment
dw 128
dup(0)
ends
code segment
start:
; set segment registers:
mov ax, data
mov ds, ax
mov es, ax
; add your
code here
mov AX,sumando1
add
AX,sumando1+2
mov Res,AX
lea dx, pkey
mov ah, 9
int 21h ; output string at ds:dx
; wait for
any key....
mov ah, 1
int 21h
mov ax,
4c00h ; exit to operating system.
int 21h
ends
end start ; set entry point and stop the assembler.
3. Programa que suma dos números
enteros de 32 bits sin signo situados en memoria y almacena el resultado en
memoria. El programa se hará con las dos variantes siguientes:
·
Declarando
cada dato como doble palabra, por ejemplo, Sumando1 DD 45651235h y acceder a
cada palabra con la directiva WORD PTR. Por ejemplo, mov ax,WORD
PTR Sumando1
cargaría en el registro AX la palabra de menor peso de Sumando1.
; multi-segment executable file template.
data segment
; add your
data here!
sumando1
DD 45651235h
sumando2 DD 45651235h
suma1
DW ?
suma2
DW ?
Res
DW ?
pkey db "press any key...$"
ends
stack segment
dw 128
dup(0)
ends
code segment
start:
; set segment registers:
mov ax, data
mov ds, ax
mov es, ax
; add your
code here
mov ax,WORD
PTR sumando1
mov bx,WORD
PTR sumando2
add ax,bx
mov suma1,ax
mov ax,WORD
PTR sumando1+2
mov bx,WORD
PTR sumando2+2
add ax,bx
mov suma2,ax
mov ax,suma2
mov bx,suma1
mov Res WORD
PTR+2,bx
mov Res WORD
PTR, ax
;mov Res,ax
lea dx, pkey
mov ah, 9
int 21h ; output string at ds:dx
; wait for
any key....
mov ah, 1
int 21h
mov ax,
4c00h ; exit to operating system.
int 21h
ends
end start ; set entry point and stop the assembler.
4.
Programa
que suma dos números enteros de 64 bits sin signo situados en memoria y
almacena el resultado en memoria.
;
multi-segment executable file template.
data
segment
; add your data here!
num1 dw 2425h,2586h,4598h,5649h
num2 dw 5263h,8463h,1234h,3698h
res dw ?, ?, ?, ?
pkey db "press any key...$"
ends
stack
segment
dw
128 dup(0)
ends
code
segment
start:
; set
segment registers:
mov ax, data
mov ds, ax
mov es, ax
; add your code here
mov ax,num1
add ax,num2
mov res,ax
mov ax,num1+2
add ax,num2+2
mov res+2,ax
mov ax,num1+4
add ax,num2+4
mov res+4,ax
mov ax,num1+6
add ax,num2+6
mov res+6,ax
lea dx, pkey
mov ah, 9
int 21h ; output string at ds:dx
; wait for any key....
mov ah, 1
int 21h
mov ax, 4c00h ; exit to operating system.
int 21h
ends
end start
; set entry point and stop the assembler.
5.
Programa
que resta dos números de 16 bits situados en memoria y almacena el resultado en
memoria.
;
multi-segment executable file template.
data
segment
; add your data here!
Num1 DW 50h
Num2 DW 20h
Res
DW ?
pkey db "press any key...$"
ends
stack
segment
dw
128 dup(0)
ends
code
segment
start:
;
set segment registers:
mov ax, data
mov ds, ax
mov es, ax
; add your code here
mov Ax,Num1
sub Ax,Num2
mov Res,Ax
lea dx, pkey
mov ah, 9
int 21h ; output string at ds:dx
; wait for any key....
mov ah, 1
int 21h
mov ax, 4c00h ; exit to operating system.
int 21h
ends
end
start ; set entry point and stop the assembler.
6.
Programa
que resta dos números enteros de 64 bits sin signo situados en memoria y
almacena el resultado en memoria.
;
multi-segment executable file template.
data
segment
; add your data here!
num1 dw 2425h,2586h,4598h,5649h
num2 dw 5263h,8463h,1234h,3698h
res dw ?, ?, ?, ?
pkey db "press any key...$"
ends
stack
segment
dw
128 dup(0)
ends
code
segment
start:
; set
segment registers:
mov ax, data
mov ds, ax
mov es, ax
; add your code here
mov ax,num1
sub ax,num2
mov res,ax
mov ax,num1+2
sub ax,num2+2
mov res+2,ax
mov ax,num1+4
sub ax,num2+4
mov res+4,ax
mov ax,num1+6
sub ax,num2+6
mov res+6,ax
lea dx, pkey
mov ah, 9
int 21h ; output string at ds:dx
; wait for any key....
mov ah, 1
int 21h
mov ax, 4c00h ; exit to operating system.
int 21h
ends
end start
; set entry point and stop the assembler.
7.
Programa
que multiplica un número de 8 bits sin signo por otro número del mismo tipo, almacenados
ambos en la memoria. El resultado se almacena en la memoria.
;
multi-segment executable file template.
data
segment
; add your data here!
Num1 db 12h
Num2 db 34h
var1 db
?
Res
dw ?
pkey db "press any key...$"
ends
stack
segment
dw
128 dup(0)
ends
code
segment
start:
;
set segment registers:
mov ax, data
mov ds, ax
mov es, ax
; add your code here
mov al,Num1
mov var1,al
mov al,Num2
MUL var1
mov Res,ax
lea dx, pkey
mov ah, 9
int 21h ; output string at ds:dx
; wait for any key....
mov ah, 1
int 21h
mov ax, 4c00h ; exit to operating system.
int 21h
ends
end
start ; set entry point and stop the assembler.
8.
Programa
que multiplica un número de 16 bits sin signo por otro número del mismo tipo, almacenados
ambos en la memoria. El resultado se almacena en la memoria.
;
multi-segment executable file template.
data
segment
; add your data here!
dato1 dw 1234d
dato2 dw 1234d
res dd ?
pkey db "press any key...$"
ends
stack
segment
dw
128 dup(0)
ends
code
segment
start:
;
set segment registers:
mov ax, data
mov ds, ax
mov es, ax
; add your code here
MOV BX, dato1
MOV CX, dato2
MOV AX, CX;
MUL BX
;el resultado se encuentra en dx-ax
mov res word ptr+2,ax
mov res word ptr,dx
lea dx, pkey
mov ah, 9
int 21h ; output string at ds:dx
; wait for any key....
mov ah, 1
int 21h
mov ax, 4c00h ; exit to operating system.
int 21h
ends
end
start ; set entry point and stop the assembler.
9.
Programa
que divide un número de 8 bits sin signo por otro número del mismo tipo,
almacenados ambos en la memoria. El cociente y el resto
se almacenan por separado en dos posiciones de memoria.
;
multi-segment executable file template.
data
segment
; add your data here!
dato1 db 20h
dato2 db 03h
cociente db ?
residuo
db ?
pkey db "press any key...$"
ends
stack
segment
dw
128 dup(0)
ends
code
segment
start:
;
set segment registers:
mov ax, data
mov ds, ax
mov es, ax
; add your code here
mov al,dato1; Se asigna valor al dividendo
mov ah,0; Se extiende con ceros
div dato2;Se realiza la division.
mov cl,al; Se almacena el cociente en CX
mov dh,ah; Se almacena el residuo en DX
mov cociente,cl
mov residuo,dh
lea dx, pkey
mov ah, 9
int 21h
; output string at ds:dx
; wait for any key....
mov ah, 1
int 21h
mov ax, 4c00h ; exit to operating system.
int 21h
ends
end
start ; set entry point and stop the assembler.
10.
Programa
que divide un número de 16 bits sin signo por otro número del mismo tipo,
almacenados ambos en la memoria. El cociente y el resto
se almacenan por separado en dos posiciones de memoria.
;
multi-segment executable file template.
data
segment
; add your data here!
dato1 dw 4567d
dato2 dw 1234d
cociente dw ?
residuo
dw ?
pkey db "press any key...$"
ends
stack
segment
dw
128 dup(0)
ends
code
segment
start:
;
set segment registers:
mov ax, data
mov ds, ax
mov es, ax
; add your code here
mov ax,dato1
mov dx,0
mov cx,dato2
div cx
mov cociente,ax
mov residuo,dx
lea dx, pkey
mov ah, 9
int 21h ; output string at ds:dx
; wait for any key....
mov ah, 1
int 21h
mov ax, 4c00h ; exit to operating system.
int 21h
ends
end
start ; set entry point and stop the assembler.
No hay comentarios:
Publicar un comentario