@CSC$qi PROC
push BP mov BP,SP
mov cx,[BP+ó] ; cx =n (lây giá trị n từ stack)
mov bx, đ ;bx=d
mOV ax, uÍ ;ax =ul mov dx,ax ; dx =ul
dec cx ¡cx=n-l
LI:
add dx,bx ; dx =U¡
add ax,dx ;aX= (tổng các thành phần từ u¡ đến ¡¡) + tị loop LÍ
pop BP ; Hồi phục giá trị của BP
Tet
@CSC$%qi ENDP END
Cách 3: Hàm Assembly có 2 đối (n, d là tham số thực - cất vào satck, còn u1 vẫn là biến toàn cục)
Têp C``:
#include <Iotream.h> #include <comio.h> intul;
extern int CSC(mt 11,int 12); void main(void)
{
int n,d;
clrscr();
cout<<”nHay vao n : “; cin>>n; cout<<”\nHay vao d : “; cin>>d; cou(t<<”nHay vao ul : “; cin>>ul;
cout<<”nTong cap so cong la : “<<CSC(n,d); getchQ; } Têp Assembly: .MODEL large .DATA EXTRN _ulI:word
.CODE
PUBLIC @CSCSqii @CSC$qii PROC
push BP
mov BP,SP
mov cx,[BP+ó] ; cx =n (lấy giá trị n từ stack) mov bx,[BP+8] ; bx = d (lấy giá trị d từ stack)
mOV ax, uÏ ;ax =ul
mov dx,ax ; dx =ul
dec cx ;€x=n-Ï
LI:
add dx,bx ; dx =u¡
add ax,dx ;aX= (tống các thành phần từ u¡ đến ¡¡) + tị loop LÍ
pop BP ; Hồi phục giá trị BP
Tet
@CSC$qii ENDP END
Cách 4: Hàm Assembly có 3 đối (n, đ và u1 đều là tham số thực - cất vào satck)
ˆ +
Tộệp C—:
#include <Iotream.h> #include <conio.h>
extern int CSC(mt ¡1,int 12,int 13); void main(void)
{
¡nt n,d,ul; clrscr(Q;
cou(<<”nHay vao n : “; cin>>n; cout<<”\nHay vao d : “; cin>>d; cou(t<<”nHay vao ul : “; cin>>ul;
cout<<”nTong cap so cong la : “<<CSC(n,d,ul); getchQ; } Têp Assembly: .MODEL large .CODE PUBLIC @CSCSqiii @CSC$dqii PROC push BP mov BP,SP
mov bx,[BP+8] ;bx=d (lây giá trị d từ stack) mov ax,[BP+I0] ; ax =ul (lây từ stack)
mov dx,ax ; dx =ul
dec cx ;Cx=n-l
LI:
add dx,bx ; dx =U¡
add ax,dx ;aX= (tống các thành phần từ u¡ đến ¡¡) + tị
loop LI
pop BP ; Hồi phục giá trị BP Tet Tet
@CSC$diii ENDP
Bài 7
; Tổng cấp số nhân khi biết n (số lượng thành phần)| ; q (công bội) và ul (giá trị thành phân đâu tiên) | Phân công nhiệm vụ :
— Ngôn ngữ C`”: s« Nhậnn,q và ul,
« - Gọi chương trình con tính tổng cấp số nhân do Assembly viết,
„ _ Hiện kết quá lên màn hình.
— Ngôn ngữ Assembly : Chương trình con tính tổng cấp số nhân Cách 1: Hàm Assembly không đối (n,q và u1 khai báo biến toàn cục)
^ + Têp C—: Têp C—: #include <Iotream.h> #include <comio.h> in n,q,ul; extern int CSNQ; void main(void) { clrscr(Q);
cout<<”\nHay vao n : “; cin>>n; cout<<”nHay vao q : “; cin>>dq; cout<<”\nHay vao ul : “; cin>>ul;
cout<<”nTong cap so cong la : “<<CSNQ; getchQ; getchQ;
}
Têp Assembly: .MODEL large
.DATA
EXTRN n:word, q:word, u1:word
.CODE