zoukankan      html  css  js  c++  java
  • 大型机汇编(mainframe assembler/HLASM)之COBOL解惑

    IDENTIFICATION DIVISION.            
    PROGRAM-ID. HELLO.                  
    ENVIRONMENT DIVISION.               
    DATA DIVISION.                      
    WORKING-STORAGE SECTION.            
    01  AAA.                            
       03 NUM1   PIC 9(3).              
       03 NUM2   PIC 9(3).              
    PROCEDURE DIVISION.                 
        MOVE 'JKL123' TO AAA.           
        COMPUTE NUM2 = NUM2 + NUM1.     
        DISPLAY NUM2.                   
        STOP RUN.
      
        
                     

    本程序中虽然NUM1里的数值是字符'JKL',但一样可以进行四则运算,并且运行的很好。显示结果为:000

    这个问题单单从COBOL层面上解释肯定是解释不通的,但从汇编角度理解就很简单了

    display型的数据里面存的十进制,但现在程序要进行四则运算,计算机只认识二进制,那怎么办?很简单,转换呗

    第一步,先用PACK指令把display型的转换成comp-3型     

    第二步,用CVB指令把COMP-3型的转换成COMP型的             

    第三步,进行四则运算

    字符'JKL'的十六进制X'D1D2D3',经过第一步后就成了X'123D'(具体怎么转换可以参考PACK指令)。

    而我们发现-123的十六进制是X'F1F2D3',经过第一步后也是X'123D'。

    所以才有了最后的结果为000

  • 相关阅读:
    java 基本数据类型的取值范围
    警惕自增的陷阱
    三元操作符的类型务必一致
    不要随便设置随机种子
    优先使用整形池
    IN、ANY、ALL与SOME
    第六章-序列:字符串、列表和元组 笔记
    第十二章-安全性
    第五章-数字 课后答案
    第十一章-约束、视图与事务
  • 原文地址:https://www.cnblogs.com/riskyer/p/3230797.html
Copyright © 2011-2022 走看看