You are on page 1of 3

tui lm theo hng dn trong cun sch: Cc bi tp lp trnh bng ngn ng assembly" ca tc gi

ng thnh phu

yu cu ca bi ton l th ny: xy dng tp vd.asm c nhim v +truyn vo 1 s t nhin n + gi hm Factorial trong file vd2.asm ( hm Factorial l hm tnh giai tha ca 1 s) tp vd2.asm c nhim v: vit chng trnh con tnh n! nhng khi chy em khng in ra c kt qu nh mong mun: VD nh bi di y em cho n =4 m giai tha n tnh ra li =0 tp vd.asm ASM Code: .model small .stack 100h .data public n n dw ? extrn fv: word m1 db 'hay cho vao so n:$' m2 db 10,13,'giia thua cua $' m3 db 'la: $' m4 db 0ah,0dh,'co tiep tuc khong$' .code extrn Factorial:proc CHuongTrinhCHinh: mov ax,@data mov ds,ax mov n,3 call Factorial mov ax,fv call HIENSOINT mov ah,4ch int 21h HIENSOINT PROC ;Vao: AX chua noi dung ;cat giu cac thanh ghi PUSH AX PUSH BX PUSH CX PUSH DX OR JNL ;Dung PUSH MOV AX,AX END_IF1 ;AX<0 ;Khong phai so am

AX ;Cat so can dua ra AL, '-' ;Hien thi dau tru

MOV AH, 2 INT 21H POP AX NEG AX ; Chuyen so can in ra so duong END_IF1: XOR CX, CX ;Xoa CX de dem cac chu so thap phan MOV BX, 10 REPEAT2: XOR DX, DX ;XOA DX DIV BX ;CHIA AX CHO 10 PUSH DX ;CAT SO DU INC CX ;TANG CX OR AX, AX ;THUONG=0? JNE REPEAT2 ;HIEN THI KET QUA MOV AH, 2 PRINTF: POP DX OR DL, 30H ; doi so ra ki tu INT 21H LOOP PRINTF ; lap cho toi khi CX = 0 ;KHOI PHUC CAC THANH GHI POP DX POP CX POP BX POP AX RET HIENSOINT ENDP end CHuongTrinhCHinh tp vd2.asm

.model small .stack 100h .data extrn n:word public fv fv dw ? Fac dw ? .code public Factorial Factorial: mov fv,1 mov fac,2 mov cx,n mov cx,1 jbe L2

dec cx L1: mov ax,fv mul fac mov fv,ax inc fac loop l1 L2: ret end Factorial

You might also like