2s Complement of a Numbers Assembly Program
2s Complement of a Numbers Algorithm
Step I : Initialize the data memory.
Step II : Load the number in AX.
Step III : Initialize counter = 16 in CX.
Step IV : Rotate number by 1 bit position to left with carry.
Step V : Complement carry.
Step VI : Decrement count.
Step VII : Check if count = 0. If not goto step IV
Step VIII : Rotate once again by 1 bit to restore original carry back.
Step IX : 2’s complement = 1’s complement in AX + 1
Step X : Display result.
Step XI : Stop.
2s Complement of a Numbers Assembly Code
1 |
.model small <br/> .data <br/> a dw 1234H <br/> .code <br/> mov ax, @data ; Initialize data section <br/> mov ds, ax <br/> mov ax, a ; Load number1 in ax <br/> mov cx, 16 ; Load CX with count <br/> up: rcl ax, 1 ; Rotate ax by 1bit to left with carry <br/> cmc ; find 1's complement of bit <br/> loop up ; check if all bits complemented, if not goto up <br/> rcl ax, 1 ; return carry back to original position <br/> add ax, 1 ; 2's complement=1's complement+1 <br/> mov ch, 04h ; Count of digits to be displayed <br/> mov cl, 04h ; Count to roll by 4 bits <br/> mov bx, ax ; Result in reg bx <br/> l2: rol bx, cl ; roll bl so that msb comes to lsb <br/> mov dl, bl ; load dl with data to be displayed <br/> and dl, 0fH ; get only lsb <br/> cmp dl, 09 ; check if digit is 0-9 or letter A-F <br/> jbe l4 <br/> add dl, 07 ; if letter add 37H else only add 30H <br/> l4: add dl, 30H <br/> mov ah, 02 ; Function 2 under INT 21H <br/> ; (Display character) <br/> int 21H <br/> dec ch ; Decrement Count <br/> jnz l2 <br/> mov ah, 4cH ; Terminate Program <br/> int 21H <br/> end |
Source projectgeek.com