80x86汇编:多字节数相加的编程方法
(2019-02-03 23:05:52)
标签:
it |
分类: 80x86 |
有一个多字节运算、显示的问题。
基本要求:
将两个4字节数相加,要求被加数、加数按顺序存放在
以DATA1和DATA2为首的4个单元中(低位在前)。
相加后的和放在DATA3开始的5个单元(考虑最高字节的进位)。
扩展要求:
把两个加数相加的表达式和相加的结果显示在屏幕上。
做而论道编程如下:
;======================================================
CCC
SEGMENT
;-----------------------------------
BG: PUSH
CS
;程序开始
;下面以10进制显示出整个算式
QUIT:
;-----------------------------------
DISP_N_BYTE:
@@: CALL
DIV_N_BYTE
@@: POP
DX
;-----------------------------------
DIV_N_BYTE:
@@: MOV
AL, [SI + BX]
;-----------------------------------
TEST_0:
@@: OR
AL, [SI + BX]
;-----------------------------------
CCC
ENDS
;======================================================
本程序运行后,显示如下:
D:\masm6.15>EAM
1357924680+3943298877=5301223557
对不对呢?大家可用计算器验算一下。
相加、相减,两种计算的编程方法,都是一样的。
有兴趣的读者,自己试试吧。
阅读(774)| 评论(34) |删除 |推送
|置顶
;======================================================
评论:
2017-06-19 19:20
1339454742
您好,我想问下中间那个@@和@B是什么啊?可否告知
2017-06-19 21:38
做而论道 回复 1339454742
@@,是自定义的标号。
2017-06-19 21:39
做而论道 回复 1339454742
@B,是转移到上边的@@去。
2017-06-19 21:41
1339454742 回复
做而论道
上一个@@么?
2017-06-20 08:11
做而论道 回复 1339454742
为什么要这样问?我说的,不清楚吗?
2017-06-20 08:19
1339454742 回复
做而论道
因为老师在讲这门课的时候很多东西没讲。所以我不是很懂这门课。所以求助博主。
2017-06-20 08:33
做而论道 回复 1339454742
@B,是转移到上边的@@去。这还有什么不清楚的?
2017-06-20 08:42
1339454742 回复
做而论道
这样做不对呀。第一个@B转向哪?
2017-06-20 08:55
做而论道 回复 1339454742
程序都能正常执行,怎能可能不对?
2017-06-20 10:29
1339454742 回复
做而论道
博主,我第一个是@@,然后第一个@B改为@@,后面的改为@A,@B,@C,里面的@B也这样改的,然后显示的是1357924680+0=1357924680,这是为什么啊
2017-06-20 10:50
做而论道 回复 1339454742
为什么?这还用问?
原程序是完全正确的。
你改了,就难免出错。
2017-06-20 10:54
1339454742 回复
做而论道
这样改也有错啊,,,
2017-06-20 16:29
牟小飞
我把代码复制下来之后,用emu8086编译不通过,@@报错,网上搜了一下,说是@@只对于masm有效,我不知道这个是不是报错的原因
2017-06-20 17:24
做而论道 回复 牟小飞
哦,应该是这样。
正统的编译软件是微软的 MASM。
EMU8086,是山寨软件,不识别 @@
也很正常。
2017-06-20 17:28
做而论道 回复 牟小飞
实在是想用
EMU8086,你可以自己改动一下。
@@,你可以自己改名,如:XX1;
下面的 @B,就要改成:XX1。
再往下的:@@、@B,都改成:XX2;
。。。
即可。
2017-06-19 21:42
做而论道
以 @@
为标号,是可以重复使用的。就不用费心琢磨:这里该写个什么呢?
2017-06-19 21:50
1339454742 回复
做而论道
那个。。。@B我还是没搞懂,调试了几次都不行,您可以具体点么,那四个@@就当做1234吧
2017-06-20 07:48
做而论道 回复 1339454742
程序,我都编好了。你还有什么可调试的?
2017-06-20 07:50
做而论道 回复 1339454742
那四个@@就当做1234吧--这可不行。
2017-06-20 07:52
做而论道 回复 1339454742
你用 DEBUG 单步跟踪一下,即可知道 @@ 和 @B
的关系。
2017-06-20 08:06
1339454742 回复
做而论道
额。。我们老师只教我们简单的使用了8086,没有教我们debug。所以那四个@B关系不清楚的话用不了。还望理解
2017-06-20 08:09
做而论道 回复 1339454742
用不了?能用的。程序,都编好了,你编译、连接后,即可运行。
2017-06-20 08:18
1339454742 回复
做而论道
用不了。因为那四个@B的指向我没弄懂,所以运行的时候总是卡在某一段或者无法实现。所以求助博主。能否把那四个@B的指向告诉我?
2017-06-20 08:30
做而论道 回复 1339454742
什么是用不了?本程序运行很正常。
2017-06-20 08:32
做而论道 回复 1339454742
总是卡在某一段或者无法实现--那么,显示什么呢?
2017-06-20 08:42
1339454742 回复
做而论道
额。我也不知道怎么说。博主您就说说那四个@B指向哪。我回去调试试试吧
2017-06-20 08:45
做而论道 回复 1339454742
@B,是转移到上边的@@去。
本程序运行很正常,显示如下:
1357924680+3943298877=5301223557
2017-06-20 08:49
1339454742 回复
做而论道
那第一个@B转移到哪。。
2017-06-20 08:51
做而论道 回复 1339454742
我所发表的程序,个个都是能够正常执行的。
绝没有【卡在某一段或者无法实现】的现象。
你调试时,可以改变数值;不要改变程序。
改了程序,就错了。
你即使不出错,也没有我写的简练。
我所写的,都是最精练的代码。
根本就没有继续提高的空间。
2017-06-20 08:54
做而论道 回复 1339454742
任何一个@B,都是转移到它上边的@@去。
2017-06-20 08:58
1339454742 回复
做而论道
好吧。一会回去我看看我哪里出错了。谢谢博主
2017-06-20 09:05
做而论道 回复 1339454742
那第一个@B转移到哪。。
--转移到它上边的@@去。
--它上边,原有个@@,没有吗?
--显然,是被你删除了。
--呵呵
2017-06-20 09:08
做而论道 回复 1339454742
你把网页上的原程序复制下来,肯定就是无错的。
有错,就是你自己改动了。
2017-06-20 09:09
1339454742 回复
做而论道
一会我回去试试吧
说明:
做而论道,是本博主在百度开博时用的昵称。
后一篇:80x86汇编:求素数

加载中…