1.请利用数据转送类指令编写一段子程序,将通用寄存器20H 和 30H中的内容进行比较,大的存放在40H中,比较过程寄存器20H 和 30H内容不变。
子程序1:
BCF STATUS,RP0 ; RP1:RP0 = 00, SELECT BANK 0
BCF STATUS,RP1 ;
MOVFW 20H ; 20H --> W
MOVWF 40H ; ASSUME 20H IS BIGGER FIRST, W --> 40H
SUBWF 30H,0 ; COMPARED 20H TO 30H, KEEP THE RESULT IN W
BTFSS STATUS,C; Bit Test f, Skip if Clear
; C=1 ; f >= W ( 30H >= 20H ), SKIP
GOTO NEXT ; C=0 ; F < W ( 30H < 20H)
MOVFW 30H ; 30H IS BIGGER, 30H --> W --> 40H
MOVWF 40H
NEXT ; NEXT IS A LABEL
子程序2:
BCF STATUS,RP0 ; RP1:RP0 = 00, SELECT BANK 0
BCF STATUS,RP1 ;
MOVFW 20H ; 20H --> W
SUBWF 30H,0 ; COMPARED 20H TO 30H, KEEP THE RESULT IN W
BTFSS STATUS,C; Bit Test f, Skip if Clear
; C=1 ; f >= W ( 30H >= 20H ), SKIP
GOTO NEXT ; C=0 ; F < W ( 30H < 20H)
MOVFW 30H ; 30H IS BIGGER, 30H --> W --> 40H
MOVWF 40H
GOTO NEXT1 ; NEXT1 IS A LABEL
NEXT ; NEXT IS A LABEL
MOVFW 20H ; 20H --> W
MOVWF 40H ; 20H IS BIGGER, W --> 40H
NEXT1 ; NEXT1 IS A LABEL
子程序1:
BCF STATUS,RP0 ; RP1:RP0 = 00, SELECT BANK 0
BCF STATUS,RP1 ;
MOVFW 20H ; 20H --> W
MOVWF 40H ; ASSUME 20H IS BIGGER FIRST, W --> 40H
SUBWF 30H,0 ; COMPARED 20H TO 30H, KEEP THE RESULT IN W
BTFSS STATUS,C; Bit Test f, Skip if Clear
; C=1 ; f >= W ( 30H >= 20H ), SKIP
GOTO NEXT ; C=0 ; F < W ( 30H < 20H)
MOVFW 30H ; 30H IS BIGGER, 30H --> W --> 40H
MOVWF 40H
NEXT ; NEXT IS A LABEL
子程序2:
BCF STATUS,RP0 ; RP1:RP0 = 00, SELECT BANK 0
BCF STATUS,RP1 ;
MOVFW 20H ; 20H --> W
SUBWF 30H,0 ; COMPARED 20H TO 30H, KEEP THE RESULT IN W
BTFSS STATUS,C; Bit Test f, Skip if Clear
; C=1 ; f >= W ( 30H >= 20H ), SKIP
GOTO NEXT ; C=0 ; F < W ( 30H < 20H)
MOVFW 30H ; 30H IS BIGGER, 30H --> W --> 40H
MOVWF 40H
GOTO NEXT1 ; NEXT1 IS A LABEL
NEXT ; NEXT IS A LABEL
MOVFW 20H ; 20H --> W
MOVWF 40H ; 20H IS BIGGER, W --> 40H
NEXT1 ; NEXT1 IS A LABEL