#include P18F4520.INC
ORG 0x00
RES_L EQU 0x30
RES_H EQU 0x31
NUM1_L EQU 0x10
NUM1_H EQU 0x11
NUM2_L EQU 0x20
NUM2_H EQU 0x21
; Load first 16-bit number into registers (NUM1)
MOVLW 0x25 ; Lower byte of NUM1
MOVWF NUM1_L
MOVLW 0x03 ; Higher byte of NUM1
MOVWF NUM1_H
; Load second 16-bit number into registers (NUM2)
MOVLW 0x10 ; Lower byte of NUM2
MOVWF NUM2_L
MOVLW 0x02 ; Higher byte of NUM2
MOVWF NUM2_H
; Perform subtraction (LOW BYTE)
MOVF NUM1_L, W ; Move NUM1_L into W register
SUBWF NUM2_L, W ; W = NUM1_L - NUM2_L
MOVWF RES_L ; Store result in RES_L
BTFSS STATUS, C ; Check if borrow occurred
DECF NUM1_H, F ; If borrow, decrement high byte
; Perform subtraction (HIGH BYTE)
MOVF NUM1_H, W
SUBWF NUM2_H, W
MOVWF RES_H
I2luY2x1ZGUgUDE4RjQ1MjAuSU5DCgpPUkcgMHgwMAoKUkVTX0wgRVFVIDB4MzAKUkVTX0ggRVFVIDB4MzEKTlVNMV9MIEVRVSAweDEwCk5VTTFfSCBFUVUgMHgxMQpOVU0yX0wgRVFVIDB4MjAKTlVNMl9IIEVRVSAweDIxCgo7IExvYWQgZmlyc3QgMTYtYml0IG51bWJlciBpbnRvIHJlZ2lzdGVycyAoTlVNMSkKTU9WTFcgMHgyNSAgICA7IExvd2VyIGJ5dGUgb2YgTlVNMQpNT1ZXRiBOVU0xX0wKTU9WTFcgMHgwMyAgICA7IEhpZ2hlciBieXRlIG9mIE5VTTEKTU9WV0YgTlVNMV9ICgo7IExvYWQgc2Vjb25kIDE2LWJpdCBudW1iZXIgaW50byByZWdpc3RlcnMgKE5VTTIpCk1PVkxXIDB4MTAgICAgOyBMb3dlciBieXRlIG9mIE5VTTIKTU9WV0YgTlVNMl9MCk1PVkxXIDB4MDIgICAgOyBIaWdoZXIgYnl0ZSBvZiBOVU0yCk1PVldGIE5VTTJfSAoKOyBQZXJmb3JtIHN1YnRyYWN0aW9uIChMT1cgQllURSkKTU9WRiBOVU0xX0wsIFcgIDsgTW92ZSBOVU0xX0wgaW50byBXIHJlZ2lzdGVyClNVQldGIE5VTTJfTCwgVyAgOyBXID0gTlVNMV9MIC0gTlVNMl9MCk1PVldGIFJFU19MICAgICAgOyBTdG9yZSByZXN1bHQgaW4gUkVTX0wKCkJURlNTIFNUQVRVUywgQyAgOyBDaGVjayBpZiBib3Jyb3cgb2NjdXJyZWQKREVDRiBOVU0xX0gsIEYgICA7IElmIGJvcnJvdywgZGVjcmVtZW50IGhpZ2ggYnl0ZQoKOyBQZXJmb3JtIHN1YnRyYWN0aW9uIChISUdIIEJZVEUpCk1PVkYgTlVNMV9ILCBXClNVQldGIE5VTTJfSCwgVwpNT1ZXRiBSRVNfSAoKRU5ECg==
#include P18F4520.INC
ORG 0x00
RES_L EQU 0x30
RES_H EQU 0x31
NUM1_L EQU 0x10
NUM1_H EQU 0x11
NUM2_L EQU 0x20
NUM2_H EQU 0x21
; Load first 16-bit number into registers (NUM1)
MOVLW 0x25 ; Lower byte of NUM1
MOVWF NUM1_L
MOVLW 0x03 ; Higher byte of NUM1
MOVWF NUM1_H
; Load second 16-bit number into registers (NUM2)
MOVLW 0x10 ; Lower byte of NUM2
MOVWF NUM2_L
MOVLW 0x02 ; Higher byte of NUM2
MOVWF NUM2_H
; Perform subtraction (LOW BYTE)
MOVF NUM1_L, W ; Move NUM1_L into W register
SUBWF NUM2_L, W ; W = NUM1_L - NUM2_L
MOVWF RES_L ; Store result in RES_L
BTFSS STATUS, C ; Check if borrow occurred
DECF NUM1_H, F ; If borrow, decrement high byte
; Perform subtraction (HIGH BYTE)
MOVF NUM1_H, W
SUBWF NUM2_H, W
MOVWF RES_H
END