【正文】
偶數(shù),Z =X∨Y; 若X為負(fù)奇數(shù),Z =X∧Y; 若X為負(fù)偶數(shù),Z =X⊕Y。 分析:正數(shù):第7位為0,負(fù)數(shù):第7位為1;奇數(shù):第0位為1,偶數(shù):第0位為0方法1:利用ANL指令判斷正負(fù)、奇偶ORG 0030HMOV A, X ANL A, 80H 。 判斷X正負(fù) JNZ NEG 。 若X為負(fù),轉(zhuǎn)NEG MOV A, X 。 X為正 ANL A, 01H 。 判斷X奇偶 JZ EVEN1 。 若X為偶數(shù),轉(zhuǎn)EVEN1MOV A, X ADD A, Y 。 若X為正奇數(shù),Z=X+Y SJMP RESULTEVEN1: MOV A, X ORL A, Y 。 若X為正偶數(shù),Z=X∨Y SJMP RESULTNEG: MOV A, X 。 X為負(fù)ANL A, 01H 。 判斷X奇偶 JZ EVEN2 。 若X為偶數(shù),轉(zhuǎn)EVEN2 MOV A, X ANL A, Y 。 若X為負(fù)奇數(shù),Z=X∧Y SJMP RESULTEVEN2: MOV A, X 。 若X為負(fù)偶數(shù),Z=X⊕Y XRL A, YRESULT: MOV Z, A END方法2:RLC指令將符號(hào)位移入CY判斷正負(fù),RRC指令將最低位移入CY判斷奇偶ORG 0030HMOV A, XCLR CRLC AJC NEG 。X為負(fù),轉(zhuǎn)至NEGRRC ARRC A JNC EVEN1 。 X為偶數(shù),轉(zhuǎn)至EVEN1MOV A, XADD A, Y 。 X為正奇數(shù),Z =X+YSJMP RETULTEVEN1: MOV A, XORL A, Y 。 X為正偶數(shù),Z =X∨Y SJMP RETULTNEG: RRC A, RRC AJNC EVEN2 MOV A, XANL A, Y 。 X為負(fù)奇數(shù),Z =X∧YSJMP RETULTEVEN2: MOV A, XXRL A, Y 。 X為負(fù)偶數(shù),Z =X⊕YRETULT: MOV Z, A END4. 把一個(gè)8位二進(jìn)制數(shù)的各位用ASCII碼表示之(例如,為0的位用30H表示,為1的位用31H表示等)。該數(shù)存放在內(nèi)部RAM的byte單元中。變換后得到的8個(gè)ASCII碼存放在外部RAM以buf開始的存儲(chǔ)單元中,試編程實(shí)現(xiàn)。ORG 0030HMOV DPTR, bufMOV R0, byteMOV R7, 08HMOV A, @ R0CLR CLOOP1 : RRC AMOV R6, AJC ONEMOV A, 30HSJMP LOOP2ONE: MOV A, 31HLOOP2 : MOVX @DPTR, AINC DPTRMOV A, R6DJNZ R7, LOOP1 END5. 編程實(shí)現(xiàn)運(yùn)算式。假定a、b、c 3個(gè)數(shù)分別存放于內(nèi)部RAM的DA、DB、DC單元中,另有平方運(yùn)算子程序SQR供調(diào)用。ORG 0030HMOV SP, 38HMOV A, DAPUSH ACCACALL SQRPOP ACCMOV DC, AMOV A, DBPUSH ACCACALL SQRPOP ACCADD A, DCMOV DC, A SQR: POP 30H POP 31HPOP ACC MOV B, A MUL AB PUSH ACC PUSH 31H PUSH 30H RET END說明:此題中a、b均為單字節(jié)數(shù),且假設(shè)ab2均為單字節(jié)數(shù),平方和c(單字節(jié)數(shù))存于DC單元中。6. 試編程實(shí)現(xiàn)兩個(gè)ASCII碼字符串是否相等。字符串的長(zhǎng)度在內(nèi)部RAM 41H單元中,第1個(gè)字符串的首地址為42H,第2個(gè)字符串的首地址為52H。如果兩個(gè)字符串相等,則置內(nèi)部RAM 40H單元為00H;否則置40H單元為FFH。ORG 0030HMOV R0, 42H MOV R1, 52H MOV R7, 41H LOOP: MOV A, @R0 MOV 30H, @R1 CJNE A, 30H, LK INC R0 INC R1 DJNZ R7, LOOP MOV 40H, 00H SJMP DD LK: MOV 40H, 0FFH DD: END 7. 在外部RAM首地址為table的數(shù)據(jù)表中,有10字節(jié)數(shù)據(jù)。試編程實(shí)現(xiàn)將每個(gè)字節(jié)的最高位無條件置1。ORG 0030HMOV DPTR, table MOV R6, 10 LOOP: MOVX A, @DPTR SETB MOVX @DPTR, A INC DPTR DJNZ R6, LOOP END18