1 双字节无符号数加法例 1: 双字节无符号数加法(R0 R1)+(R2 R3) →(R4 R5), R0、 R2、 R4 存放 16 位数的高字节, R1、 R3、 R5 存放低字节。已知(R0 R1)= ( 93h,79h);(R2 R3)=(25h,a4h) 假设其和不超过 16 位。请编程。提示: 由于不存在 16 位数加法指令, 所以只能先加低 8位, 后加高 8位,而在加高 8 位时要连低 8 位相加时产生的进位一起相加。查看 psw 中的标志 CY= ?, OV= ?, AC= ?, P= ?。熟悉软件环境, 要求能知道在哪里看数据的值, 在哪里能看一些寄存器的内容,在哪里看程序代码。如何在伟福软件环境下建立项目,运行文件。要求按照标准模式来写程序, ORG 0000H LJMP 0050H START: MOV R1,#79H MOV R3,#0A4H MOV A,R1 ADD A,R3 MOV R5,A CLR A MOV R0,#93H MOV R2,#25H MOV A,R0 ADDC A,R2 MOV R4,A SS:JMP SS END 2 双字节无符号数减法例 2: 双字节无符号数相减(R0 R1) - (R2 R3) →(R4 R5) 。 R0、 R2、 R4 存放 16 位数的高字节, R1、 R3、 R5 存放低字节, 已知(R0 R1)= ( 93h,79h);(R2 R3)=(25h,a4h); 请编程。同学自己可以设置被减数与减数数值提示: 先减低 8位, 后减高 8 位和低位减借位。由于低位开始减时没有借位, 所以要先清零。 ORG 0000H LJMP 0050H START: MOV R0,#93H MOV R1,#79H MOV R2,#25H MOV R3,#0A4H MOV A,R1 SUBB A,R3 MOV R5,A CLR A MOV A,R0 SUBB A,R2 MOV R4,A SS:JMP SS END 3 双字节数乘以单字节数例 3: 利用单字节乘法指令,进行双字节数乘以单字节数运算。若被乘数为 16 位无符号数, 地址为 M1( 30H) 和 M1+1(31H) ( 低位先、高位后), 乘数为 8 位无符号数,地址为 M2(32H), 积由高位到低位存入 R2、 R3和 R4 三个寄存器中。 30H,31H,32H 内容 12H , 34H , 56H ; 提示: (M1+1) (M1) × (M2) R3 R4;是 M2 乘 M1 的高 8位,低8位+BA;是 M2 乘 M1+1 的高 8位,低8位 R2 R3 0000h ljmp 0050h start: Mov 30h, #12h mov 31h, #34h mov 32h, #56h mov a, 30h mov b,32h mul ab ;低八位存 A ,高八位存 B mov r4, a mov r3, b clr a clr b mov a, 32h mov b, 31h mul ab add a,r3 mov r2,b ss: jmp ss end 位二进制数转换为 3位 BCD 例 4: 利用除法指令把累加器 A 中的 8 位二进制数转换为 3 位 BCD 数, 并以压缩形式存放在地址 M1、 M2 单元中。设A 中放 A8H , M1、 M2 单元地址是 30H , 31H 提示: 累加器 A 中的 8 位二进制数, 先对其除以 100 ( 64H ) , 商数即为十进制的百位数; 余数部分再除以 10 (0AH), 所得商数和余数分别为十进制十位数和个位数, 即得到 3位 BC D数。百位数放在 M1中,十位、个位数压缩 BCD 数放在 M2 中, 十位与个位数的压缩 BCD 数的存放是通过 SWAP 和 ADD 指令实现的。 org 0000h ljmp 0050h start: mov a,#0a8h mov b,#64h div ab mov 30h, a clr a mov a,b clr b mov b, #0ah div ab swap a add a,b mov 31h, a ss:jmp ss end5 双字节压缩 BCD 码加法例 6: 双字节压缩 BCD 码加法。设 R5( 高)、 R4( 低) 为被加数; R3( 高)、 R2( 低) 为加数, 相加和的结果存入: R6( 万)、 R5( 千、百)、 R4( 十、个) 。被加数 98H , 76H ;加数 54H , 0000h ljmp 0050h start: mov r5, #98h mov r4, #76h mov r3, #54h mov r2, #32h mov a, r2 add
1双字节无符号数加法(精) 来自淘豆网m.daumloan.com转载请标明出处.