Tinh bieu thuc (asm C++)
Bài 5
;-----------------------------------------
; Tính biểu thức nEi=1 i
;-----------------------------------------
Phân công nhiệm vụ :
- Ngôn ngữ C++:
· Nhận N,
· Gọi chương trình con tính 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
Cách 1: Hàm Assembly không đối (N khai báo biến toàn cục)
Tệp C++:
#include <iotream.h>
#include <conio.h>
int N;
extern int TONG();
void main(void)
{
clrscr();
cout<<”
Hay vao n : “; cin>>N;
cout<<”
Tong tu 1 den “<<N<<” la : “<<TONG();
getch();
}
Tệp Assembly:
.MODEL large
.DATA
EXTRN _N:word
.CODE
PUBLIC @TONG$qv
@TONG$qv PROC
mov cx,_N ; cx = N
mov ax,cx ; ax = N
dec cx ; cx= N-1
L1:
add ax,cx ; ax = tổng
loop L1
L2:
ret
@TONG$qv ENDP
END
Cách 2: Hàm Assembly có 1 đối (N là tham số thực)
Tệp C++:
#include <iotream.h>
#include <conio.h>
extern int TONG(int i);
void main(void)
{
int N;
clrscr();
cout<<”
Hay vao N : “; cin>>N;
cout<<”
Tong tu 1 den ”<<N<<” la : “<<TONG(N);
getch();
}
Tệp Assembly:
.MODEL large
.CODE
PUBLIC @TONG$qi
@TONG$qi PROC
push BP
mov BP,SP
mov cx,[BP+6] ; cx = a (lấy giá trị n trong stack đưa vào cx)
mov ax,cx ; ax = N
dec cx ; cx= N-1
L1:
add ax,cx ; ax = tổng
loop L1
L2:
pop BP ; Hồi phục giá trị BP
ret
@TONG$qi ENDP
END
Bạn đang đọc truyện trên: Truyen247.Pro