如何用汇编设计两个16位数相减的程序

2021-03-07 15:49:04 字数 1863 阅读 2133

1楼:匿名用户

减数低八位送30h,高八位送31h。被减数低八位送32h,高八位送33h。差送34(低八位)、35(高八位)。

清cymov a, 30hsubb a, 32hmov 34h, a

mov a, 31hsubb a, 33hmov 35h, a

这是8051单片机的设计方法,要是有支持16位的减法指令就不用设计了,直接写就ok了。

2楼:匿名用户

16位数是16位二进制数还是十进制数??(假如单片机是8位的)如果是16位二进制数就用2个寄存器*2+z标志,每个数用2个寄存器来存储,先算低8位的,然后算高8位减去z位其实用c位也可以如果是16位十进制数要转化为二进制,然后就十分麻烦了,定义一个数组或者结构体这么大的数字单片机算得很累的,没有试过

3楼:匿名用户

有16位减法就直接用单个指令实现,没有的话想办法扩展就ok了。

4楼:风雷小草

二楼的基本思路是对的,但没有考虑低字节相减得负数的情况。需要结合状态寄存器,用分支对不同的情况进行区分。

两个十六位二进制数相减,完整汇编语言程序

5楼:江城微波

;两个十六位进制数相减

data

segment

num1 dw 1111000011110010b ;被减数num2 dw 1111000011110001b ;减数num3 dw ? ;结果

data ends

code segment

assume cs:code,ds:datastart: mov ax,data

mov ds,ax

mov ax,num1

mov bx,num2

sub ax,bx

mov num3,ax

mov ah,02h ;显示结果

mov dx,num3

int 21h

mov ah,4ch

int 21h

code ends

end start

6楼:匿名用户

对于86而言,有直接的16位减法指令,所以这个题目的cpu应该是8位单片机,以51单片机为例,先将借位清零,低八位相减法,再高八位带借位减,类似于列式减法运算一样。程序如下:

; (r3r4-r6r7)=(r3r4)

;入口: r3,r4,r6,r7

;出口: r3,r4

nsub :

mov a,r4

clr c ;借位清零subb a,r7 ;低八位相减

mov r4,a ;保存低八位结果

mov a,r3

subb a,r6 ;高八位带借位减mov r3,a ;保存高八位结果ret

80c51单片机编程实现两个16位数的减法。

7楼:七彩镜

sub16:

clr c ;清进位mov a,#50h ;被减数低位送累加器subb a,#4bh ;减去减数低mov 31h,a ;差低位送31hmov a,#6fh ;被减数高位送累加器subb a,#13h ;减去减数高位mov 30h,a ;差高位送30h;如果有借位,c为1

8楼:顶起石头的小草

你好!是用汇编来完成?

如何用SQL数据库和C程序设计设计超市管理系统

1楼 秋韵盎然暗香 1 不要想着有现成的源 ,现在 上都有得卖这样的 软件 10来块呢 2 如果是想自己学习成长,就自己写, 绝对不少,而且过程比较长3 超市管理系统使用sqlite就行了,没必要搞得太复杂,网上找个sqlite例子学习一下 4 c 写会界面 ,最好能看懂designer cs的 5...

verilog如何实现两数相减,verilog中计算两数相减的平方时要声明成有符号数吗

1楼 不会水的小兵 1 像你这样也是可以的,但只能以大减小。 2 你的输入输出都为无符号数,结果是无所谓正负之分的,也无溢出。要想结果可正可负,你可以将寄存器都设置成有符号数的,但这样一来就有溢出的问题了,但只要你在进行运算时注意结果不要超出范围就行了。 2楼 匿名用户 不可以,结果可能会溢出,用9...

如何编写程序通过手机控制家电,如何开发一个用手机就可以控制智能家居的系统?需要哪些准备?

1楼 exia小童鞋 这完全是硬件问题,不能靠编写程序解决 2楼 梦想哥 这完全靠程序是做不到的 如何开发一个用手机就可以控制智能家居的系统?需要哪些准备? 3楼 匿名用户 其实说起来很简单,手机上需要开发一套控制软件,硬件上需要开发中心管理软件。另外是硬件开发。像灯光控制 窗帘控制 空调 家电 音...