汇编语言实现将两个8位无符号数乘法的程序编为一个子程序,被乘数、乘数和乘积存放于NUM开始的4个存储单元

我是一个刚学汇编语言不久,对于这一题我知道将乘法编为一个子程序是很容易的,可是怎么体现乘数和被乘数和乘数在NUM开始的4个存储的单元中,2我是想赋值给被乘数和乘数,最后将结果显示在屏幕上,所以我想拜托哪位编程高手教我一下,很急!拜托了.
我看了你的答复后我不禁要说一句:"真是狂晕到家了."真是的,根本说的不是同一个问题,还吵的跟真的是的!你说的那一题已经是我很久以前提出的,至于没什么原因就关掉我要向你道歉拉!不好意思!因为我提出那个问题后我又自己做出来了,所以就没看你写的!所以我要郑重向你说SORRY!但我也要说一句:"你为什么不看清楚我提的问题就回答啊?不然我们也不吵?"但不管怎样还是要向你说声对不起拉!
还有我要说声谢谢,谢你还在帮我想这一题!但我也已经调试出来!其实我提出问题并不是我不会,就是有些地方不会出来,我想通过提问找出灵感找出解决问题的方法!

第1个回答  2007-05-09
记得前帮你做过一道题啊(将A单元的内容求补,并与原内容相"与",结果存人B单元中),可你不管三七二十一把问题关闭了。这次就算了。

怎么不能运行啊?我发答案前都是经过调试的,那有那么不负责任随便往上发啊。经过汇编连接后运行要用debug看结果的。我刚刚又复制下来运行了下,没有问题,12H,经处理后得到02H。
就算你运行不出来,你也好再问一句吧,就这样什么也不说就关闭问题,有点不厚道吧。人家也是辛辛苦苦做出来的。再说了,不能运行就一定是程序有问题,而不是你操作不对吗?
另外给你提个醒啊,要是你直接复制程序下来的话,要把最后的字符删一个(比如是我那个程序,要把"end begin"后面的字符删掉),虽然看不到,但汇编会提示错误。
程序本身是正确的哈。

大姐,我真晕了。这哪是我的答案啊,我的是这个:
已关闭
用汇编语言编写:将A单元的内容求补,并与原内容相"与",结果存人B单元中.
悬赏分:20 - 提问时间2007-4-5 18:40 问题为何被关闭
我是一个学汇编语言的新手,所以我想通过这个题目的编写来具体了解汇编语言的结构,还希望哪位汇编高手帮帮我解答一下.在此我先谢谢了!
有悬赏的哦!
提问者:香儿是我 - 助理 二级
答复共 1 条
dseg segment
a db 12h
b db ?
dseg ends
cseg segment
assume cs:cseg,ds:dseg
begin:
mov ax,dseg
mov ds,ax
mov al,a
neg al
and al,a
mov b,al
mov ah,4ch
int 21h
cseg ends
end begin
回答者:ynus - 高级魔法师 六级 4-6 19:30
点连接看看:http://zhidao.baidu.com/question/23623304.html

不过我们也算是不吵不相识啊,你现在这个问题我试着回答一下,哈哈。
1.放在num开始的单元:8位乘以8位结果是16位,被乘数、乘数和乘积正好是32位,放在num开始的单元就好了。num这样定义:
num db 12H,34H,?,? ;假设是12H*34H,乘积不确定啊,所以用?表示。
将来用mov指令将num的第一个数放到al中,用mul指令乘以num+1就行了:
mov al,num
mul num+1
乘积放在AX中,这时存放时要注意高字节在高地址部分,低字节在低地址部分:
mov num+2,al
mov num+3,ah

2.如果你想用键盘赋值,那你得看键盘输入的是10进制还是16进制。要分别转换(因为键盘输入的是ASCII码)。
如果是10进制,就得把高四位清零(相当于减去30H),转换成一位十进制数,然后乘以10,加上下一个……
如果是16进制,最好用查表的方法转换(xlat指令)
显示嘛,也是一样的,先确定用什么进制显示,然后再将数值转换为相应的ASCII码,用DOS功能调用显示出来。

其实汇编语言的输入输出是很麻烦的,所以最好还是用debug调试看到结果。也可以事先编写出通用性较强的输入输入的子程序,直接调用就行了。

汇编语言问题mul指令
MUL指令是指80C51单片机系统的乘法指令,只有一条指令。乘法指令的功能是将A和B中两个无符号8位二进制数相乘,所得的16位积的低8位存于A中,高8位存于B中。如果乘积大于255,即高位B不为0,则OV置1;否则OV清0,CY总是清0。MUL指令有三种格式:第一种是将8位的操作数于al相乘。第二种是将1...

汇编语言实现乘法
sub al,30 mov dx,num2 sub dx,30 mul al,dx mov dl,al mov ah,02 int 21

哪位高手可以给一份用汇编语言编写的增量型PID算法的程序,谢谢
先将[R1]传送到第二工作区 MOV C,F0 ;用加减标志来校正第二操作数的有效符号 CLR A ; ***???应加的一条语句 RRC A XRL A,@R1 MOV C,ACC.7 ASN: MOV 1EH,C ;将第二操作数的有效符号存入位1EH中 XRL A,@R0 ;与第一操作数的符号比较 RLC A MOV F0,C ;保存比较结果 LCALL MVR0 ;将[R0...

汇编语言两个字相乘要怎么才能存储在一个双字里
利用指令MUL。将被乘数放入AX,乘数放在一个字寄存器中或者内存单元里,然后相乘。如下所示:MUL SRC;SRC放乘数,被乘数已经在AX中了。所得结果是一个双字的整数。低字节的部分在AX中,高字节的部分在DX中。使用时,只要将这两个部分拼在一起就可以了。

汇编语言,如何实现24H*1AH
无符号数乘法指令 MUL(MULtiply)格式: MUL OPRD 说明:1. OPRD为通用寄存器或存储器操作数.2. OPRD为源操作数,即作乘数.目的操作数是隐含的,即被乘数总是指定为累加器AX或AL的内容.3. 16位乘法时,AX中为被乘数.8位乘法时,AL为被乘数.当16位乘法时,32位的乘积存于DX及AX中;8位乘法的16位乘积...

汇编语言实现定点原码两位乘法
mov xb,dl ;把补码放入xb变量中 call crlf ;回车换行子程序 mov ah,9 lea dx,str2 ;输出字符串str2 int 21h call input ;调用输入子程序,接收乘数 mov y,bl ;把被乘数放入y ;mov ah,0 ;开始时部分积放入ah mov al,y ;乘数放入al寄存器 mov cx,00h ;用于记录部分积...

汇编语言中ax,bx,cx,dx……英文全称是什么,中文代表什么
DX 称为数据寄存器,在寄存器间接寻址中的I\/O指令中存放I\/O端口的地址 另外,在做双字长乘除法运算时,DX 与AX合起来存放一个双字长数(32位),其中DX存放高16位,AX存放低16位. 1978年Intel公司推出16位微处理器8086。8086是一种具有代表性的处理器,后续推出的各种处理器均保持与之兼容。8086CPU采用HMOS工艺,片...

汇编语言
12.指出以下程序每一条的执行结果。MOV A,#25H ADD A,R2MOV R2,#33H ADDC A,@R1MOV 40H,#1AH ADDC A,40HMOV R1,#40H 13.试编程实现两个无符号16位数的减法,被减数和减数分别存放在DATA1和DATA2为首址的内部RAM中,低位在先,高位在后,差存于R3(低8位)和R4(高8位)中。14.指出以下程序每一条...

51单片机做科学计算器的c语言程序
在程序说明中,用[R0]或[R1]来表示R0或R1指示的十进制浮点操作数?例如有一个十进制浮点操作数存放在30H?31H?32H中,数值是 -0.07315,即-0.7315乘以10的-1次方,则(30H)=0FFH,31H=73H,(32H)=15H?若用[R0]来指向它,则应使(R0)=30H?4.运算精度:单次定点运算精度为结果最低位的当量值;单次二进制浮点...

求一个单片机程序
;具体可参考相关子程序库;最大实现FFFF*FFFF=FFFE0001的算法 比如:0X08 0X43 * 0X00 0X10>>>0X84 0X30;本程序实现双字节无符号数乘法。;入口参数:被乘数在SOUH:SOU中,乘数在RLTH:RLT中。;出口参数:结果在RLTH:RLT:SOUH:SOU中。 IFNDEF DUMUL1 #DEFINE DUMUL1 DUMUL MOVLW .16 MOVWF CNT MOVF SOU...

相似回答