05 สิงหาคม 2554

[Assembly]โปรแกรม บวก ลบ โดยกำหนดค่าของตัวแปรอยู่ในรูปของเลขรหัส BCD (4หลัก)

.model small
.data
    SUM    dw 0
    START  dw 1234H
    VAdd   dw 3099H
    VSub   dw 2099H
.code  
    MOV ax,@data
    MOV ds,ax
 
;-------------------- Addition
 
MOV DX,START     ;load START
MOV BX,VADD        ;load ValueAddition
    MOV AL,BL       ;sum BL with DL
    ADD AL,DL
    DAA             ;adjust
    MOV CL,AL       ;answer to CL
    MOV AL,BH       ;sum BH, DH, and carry
    ADC AL,DH
    DAA             ;adjust
    MOV CH,AL       ;answer to CH

;-------------------- Subtraction

    MOV DX,Vsub     ;load ValueAddition
    MOV BX,CX        ;load Answer of Addition
MOV AL,BL       ;subtract DL from BL
    SUB AL,DL
DAS             ;adjust
MOV CL,AL       ;answer to CL
  MOV AL,BH       ;subtract DH, and carry
SBB AL,DH
DAS             ;adjust
    MOV CH,AL       ;answer to CH

    MOV ax,4c00h
    INT 21h
end

[Assembly]โปรแกรม บวก ลบ คูณ หาร แบบคิดตัวทด

.model small
.data
CSUM   DW 0
CREN   DW 0
COM    DB 0
CADD   DB 24
CSUB   DB 10
CMUL   DB 3
CDIV   DB 4
.code
mov ax,@data
mov ds,ax

mov ax,CSUM
mov al,COM
add al,CADD
adc ah,0
     
sub al,CSUB
sbb ah,0
 
 mov bl,CMUL
mov bh,0
mul bx
 
 mov bl,CDIV
div bx
mov CSUM,ax
mov ax,0
div bx
mov CREN,ax

mov ax,4c00h
int 21h
end

[Assembly]โปรแกรม บวก ลบ คูณ หาร แบบปัดเศษทศนิยม

.model small
.data
CSUM   DW 0
COM    DB 0
CADD   DB 24
CSUB   DB 8
CMUL   DB 4
CDIV   DB 3
.code
mov ax,@data
mov ds,ax

mov ax,CSUM
mov al,COM
add al,CADD
adc ah,0
     
sub al,CSUB
sbb ah,0
 
 mov bl,CMUL
mov bh,0
mul bx
 
 mov bl,CDIV
div bx
add ah,ah
cmp ah,bl
jb NEXT
inc al

NEXT:  mov CSUM,ax

 mov ax,4c00h
int 21h
end