1、0X070XC81(A)的地址D:0X00E0ADD A,#2000X0002 0XC00X90SJMP $结果(A) =0X90,(cy)=1,结果为400 (2)计算两个双字节数的和的参考程序: ORG 0100H MOV A,#low(36589) ADD A,# low(46542) MOV 30H,A MOV A,#HIGH (36589) ADDC A,# HIGH (46542) MOV 31H,A MOV A,#0 ADDC A,#0 MOV 32H,A(OV)(30H)(31H)(32H)ORG 0100HMOV A,#low(36589)0x0100 0X000XEDADD
2、 A,# low(46542)0x0102 0XBBMOV 30H,A0x0104 MOV A,#HIGH (36589)0x0106 0X8EADDC A,# HIGH (46542)0x0108 0XC40X44MOV 31H,A0x010A MOV A,#00x010C ADDC A,#00x010E MOV 32H,A0x0110 0x0112:83131地址D:0X00300X00310X0032 2)减法的参考程序 (1)两个单字节数的减法程序 CLR CMOV A,#100 SUBB A,#200(SP)0x0000 0x0001 0X64SUBB A,#2000x0003 0X
3、9C0x0005 -100(2)两个双字节数的减法程序MAIN: SUBB A,# low(16542) MOV A,#HIGH (36589) SUBB A,# HIGH (16542) SUBB A,#0MOV ,#low(36589)0x0101 SUBB A,# low(16542)0x0103 0X410X4F0x0105 MOV A,#HIGH (36589)0x0107 0X40SUBB A,# HIGH (16542)0x0109 0X040X4E0x010B 0x010D SUBB A,#00x010F 0x0111 0x011320472、计算下面各式中两个带符号数的和及差
4、,观察OV,并记录运算结果,并求出结果的真值。(1)计算 56+78 MAIN: MOV A,#56 ADD A,#78(PC)(AC)(PSW)0X00000X38ADD A,#780X00020X860X450X0004134(2)计算 120+120 MOV A,#120 ADD A,#1200X78ADD A,#1200XF0240(3)计算 -56-78MOV A,#-56 SUBB A,#780X0001SUBB A,#780X00030X7A0X0005-134(4)计算 -120-123MOV A,#-120 SUBB A,#123(DPTR)0X88SUBB A,#1230X
5、0D-243 参考程序见无符号数的加法和减法程序。3、 BCD码运算,观察CY、AC,并记录运行结果,求出结果的真值。1) 计算 56+99参考程序: MOV A,#56H ADD A,#99H DA A0X56ADD A,#99H0x0002 0XEFDA A0x0004 0X800X550x0007 1552) 计算 56-99MOV A,#9AHSUBB A,#99H ADD A,#56H CPL C0X9AADD A,#56H0X570x0008 CPL C0x000A 0X810x000B-433)计算36826529+29541265被加数(33H)36H82H65H29H加数(2
6、3H)(22H)(21H)(20H)54H12H和多字节十进制加法参考程序: MOV R0, #30H MOV R1, #20H MOV 2FH,#04H DA1: MOV A,R0ADDC A, R1 MOV R1, A INC R0 INC R1 DJNZ 2FH, DA1 MOV 7FH, C END (R0)(R0)(R1)(R1)(D:0X002F)0X300X290X65MOV R1, #20H0X20MOV 2FH,#04HCLR C0X0007DA1:0X00080X00090X000A0X940X05MOV R1, A0X000BINC R00X000C0X31INC R10
7、X000D0X210X12DJNZ 2FH, DA10X000E进行循环,第35步循环结果为(21H)=77H,(22H)=36H,(23H)=66HMOV 7FH, C0X00110X660X330X360X230X0013END 0X00330X00230X00220X00210X0020最后结果为:66267794思考题1)如果求两个带符号数的和或差出现了溢出,如何将两个运算数扩大字节后再做一遍,再观察OV,记录结果,求出真值,计算结果还溢出吗?。答:不会溢出。如何将两个运算数扩大字节后再做一遍,OV为0,计算结果不会溢出。2)在多字节十进制加法程序,若两数的和存放到从40H开始的单元,
8、如何修改程序?在MAIN中加一条MOV R2,40H指令。并将DA1中的MOV R1,A改为MOV R2,A并在INC R1后加一条INC R2 。实验四 逻辑运算及位操作指令编程设计(1) 熟悉字节逻辑运算指令功能。(2) 熟悉位操作指令运算功能。 (3)从而更深入的掌握汇编语言程序设计。 (4)学会观察CPU窗口中BIT区的变化。1 字节逻辑运算程序在片内RAM的FIRST和SECOND单元中各有一符号数X和Y,要求按下列条件算出Z,存入RESULT单元中(设运算结果仍为8位数)。FIRST EQU 30H SECOND EQU 31H RESULT EQU 32H START:MOV R
9、0,FIRST MOV A, R0 JB ACC.7, NEG MOV B, #2 DIV AB MOV A, B JZ TEMP1 MOV A,R0 ADD A, SECOND SJMP RES TEMP1: MOV A, R0 ANL A, SECOND NEG: CPL ACC.7 JZ TEMP2 ORL A, SECOND TEMP2: XRL A, SECOND RES: MOV RESULT, A手动设置 (d:0x0030)=0x01,(d:0x0031)=0x02(B)START:MOV A, R0JB ACC.7, NEGMOV B, #20X00060X02DIV ABM
10、OV A, BJZ TEMP1MOV A,R0ADD A, SECOND0X000F0X03SJMP RESTEMP1:ANL A, SECOND0X00140X0017NEG:0X00180X001A0X001D0X001EJZ TEMP2MOV A, R0ORL A,SECOND0X0025TEMP2:0X0027XRL A,SECOND0X00280X002A0X002C结果Z=X+Y,即 (d:0x0032)=0x03 2位操作程序 布尔电路图如下: X BIT 00H Y BIT 01H Z BIT 02H F BIT 03H START: MOV C, Z ANL C, /Y MO
11、V F, C MOV C, Y ANL C, /Z ORL C, F MOV C, X ANL C, Y ORL C, /F(F)初值:(20H)=07HSTART:ANL C, /YMOV F, CMOV C, YANL C, /ZORL C, FMOV C, XANL C, Y0X0010ORL C, /F0X00120X0016结果:(20H)=0X0F三、 思考题1 字节与位逻辑运算指令在编程上什么区别?应注意什么?主要在寻址方式的不同,使得命令使用也不同。应注意逻辑运算的寻址方式是位寻址,改变的数只能是0或1。2 如何用断点方式调试本程序?在开始调试时用断点按钮和光标配合设定断点然后开始调试。实验五 代码转换及移位操作一、实验目的
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1