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

  • 相关阅读:
    如何理解显示卡的驱动模块(DDX,DRM,DRI,XVMC)
    基于Linux的嵌入式文件系统构建与设计
    Windows系统——后缀为.zip.00X的zip分卷解压
    windows系统——U 盘损坏修复
    windows系统——常用命令
    U盘用FAT32还是用NTFS格式好
    linux系统程序设计教程
    Posix线程编程指南
    编程风格——UNIX 高手的 10 个习惯
    linux压缩文件——解压方法
  • 原文地址:https://www.cnblogs.com/riskyer/p/3230797.html
Copyright © 2011-2022 走看看