Jump to content

Talk:Intel BCD opcodes

Page contents not supported in other languages.
From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by 2001:470:1f06:ccb::2 (talk) at 19:40, 19 September 2020 (Immediate operand: new section). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

WikiProject iconComputing Unassessed
WikiProject iconThis article is within the scope of WikiProject Computing, a collaborative effort to improve the coverage of computers, computing, and information technology on Wikipedia. If you would like to participate, please visit the project page, where you can join the discussion and see a list of open tasks.
???This article has not yet received a rating on Wikipedia's content assessment scale.
???This article has not yet received a rating on the project's importance scale.

Can anyone is able to tell why we only add (0110)bcd only in BCD addition??--220.225.33.97 (talk) 09:10, 21 July 2008 (UTC)--220.225.33.97 (talk) 09:10, 21 July 2008 (UTC)--220.225.33.97 (talk) 09:10, 21 July 2008 (UTC)manoj[reply]

To make sure the result is valid BCD. For example, if you were to add 9 + 9 = 18, that would be 0000:1001 + 0000:1001 = 0001:0010, which would be wrong: 12. So 6 (16 - 10) is added: 0001:0010 + 0110 = 0001:1000, which equals 18, the correct result. Shinobu (talk) 09:53, 18 October 2008 (UTC)[reply]

Alternatives

From the article: "Therefore, even financial software today usually stores values in binary representation and only converts to decimal for input and output.", with a cited reference about X86 instruction sets, not financial software (unless I missed it in the linked to article). It is my understanding that in some countries, such as the USA, financial corporations like banks are required to use decimal based math for financial calculations. Mainframe instruction sets still fully support packed and unpacked decimal math, as well as programming languages like COBOL. Rcgldr (talk) 03:45, 15 September 2017 (UTC)[reply]

Generalization

Just as an idea: transfer this thread to "BCD instruction set" and add to the thread other CPUs, which support BCD calculations, like 68k with "ABCD" and "SBCD". --93.220.220.157 (talk) 16:41, 3 October 2017 (UTC)[reply]

There is another article: Binary-coded_decimal, with section Binary-coded_decimal#Other_computers_and_BCD Rcgldr (talk) 19:33, 5 October 2017 (UTC)[reply]

Immediate operand

The article should perhaps mention that there was not enough mask space on the original 8086 to store the constant 10, so the AAM and AAD instructions actually have it as an imm8 operand, and were in fact capable of performing the "adjustment" in an arbitrary radix, not just decimal. This was not officially supported by Intel, and some later processors ignored the immediate operand and always used 10. The Intel and Microsoft assemblers did not support specifying the operand but other assemblers did, and of course it could be trivially hand-assembled (both instructions have single-byte opcodes). 2001:470:1F06:CCB:0:0:0:2 (talk) 19:40, 19 September 2020 (UTC)[reply]