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

  • 相关阅读:
    resin
    tomcat
    vba打开输入文件
    获取文件夹下所有文件2
    获取文件夹下所有文件
    修改Execl中sheet名的指定字符串为指定字符串
    SpringMVC入门到精通(一)
    Java JDBC
    Java反射
    Java日期格式化
  • 原文地址:https://www.cnblogs.com/riskyer/p/3230797.html
Copyright © 2011-2022 走看看