指针与引用区别与汇编语言

★ 相同点:
1. 都是地址的概念;
指针指向一块内存,它的内容是所指内存的地址;引用是某块内存的别名。

★ 区别:
1. 指针是一个实体,而引用仅是个别名;
2. 引用使用时无需解引用(*),指针需要解引用;
3. 引用只能在定义时被初始化一次,之后不可变;指针可变;
4. 引用没有 const,指针有 const;
5. 引用不能为空,指针可以为空;
6. “sizeof 引用”得到的是所指向的变量(对象)的大小,而“sizeof 指针”得到的是指针本身(所指向的变量或对象的地址)的大小;
7. 指针和引用的自增(++)运算意义不一样;

8.从内存分配上看:程序为指针变量分配内存区域,而引用不需要分配内存区域。

汇编语言

编写程序,判断一个年份是否是闰年。

DATA  SEGMENT
       INFON  DB        0DH,0AH,'Please input a year: $'
           Y  DB        0DH,0AH,'This is a leap year! $'
           N  DB        0DH,0AH,'This is not a leap year! $'
           W  DW        0
         BUF  DB        8
              DB        ?
              DB        8 DUP(?)
        DATA  ENDS
       STACK  SEGMENT   'stack'
              DB        200 DUP(0)
       STACK  ENDS
        CODE  SEGMENT
              ASSUME    DS:DATA,SS:STACK,CS:CODE
      START:  MOV       AX,DATA
              MOV       DS,AX
              LEA       DX,INFON
              MOV       AH,9
              INT       21H
              LEA       DX,BUF
              MOV       AH,10
              INT       21H
              MOV       CL, [BUF+1]
              LEA       DI,BUF+2
              CALL      DATACATE
              CALL      IFYEARS
              JC        A1
              LEA       DX,N
              MOV       AH,9
              INT       21H
              JMP       EXIT
         A1:  LEA       DX,Y
              MOV       AH,9
              INT       21H
       EXIT:  MOV       AH,4CH
              INT       21H
    DATACATE  PROC      NEAR
              LEA       SI,BUF+2
              MOV       BX,0
         X3:
              MOV       AL ,[SI]
              SUB       AL ,30H
              MOV       AH,0
              XCHG      AX,BX
              MOV       DX,10D
              MUL       DX
              XCHG      AX,BX
              ADD       BX,AX
              INC       SI
              LOOP      X3
              MOV       W,BX
              RET
    DATACATE  ENDP
     IFYEARS  PROC      NEAR
              PUSH      BX
              PUSH      CX
              PUSH      DX
              MOV       AX,W
              MOV       CX,AX
              MOV       DX,0
              MOV       BX,4
              DIV       BX
              CMP       DX,0
              JNZ       LAB1
              MOV       AX,CX
              MOV       BX,100
              DIV       BX
              CMP       DX,0
              JNZ       LAB2
              MOV       AX,CX
              MOV       BX,400
              DIV       BX
              CMP       DX,0
              JZ        LAB2
       LAB1:  CLC
              JMP       LAB3
       LAB2:  STC
       LAB3:  POP       DX
              POP       CX
              POP       BX
              RET
     IFYEARS  ENDP
        CODE  ENDS
              END       START

打开 运行 输入 cmd 打开.asm 文件 例如 f: -----> cd a------>masm abc.asm ----开始编译 编译完成 再打 masm abc

link masm 然后就可以执行 输入 abc 就可以执行

还有书中398页 例10-4程序

     

     DATA SEGMENT
RABBITNUM DW      650
 MONTHNUM DB         ?
     DATA ENDS
   STACK1 SEGMENT PARASTACN
          DW      20 DUP (?)
   STACK1 ENDS
     CODE SEGMENT
          ASSUME  CS:CODE,DS:DAT
  START : MOV     AX,DATA
          MOV     DS,AX
          XOR     CX,CX
          MOV     AX,0
          MOV     BX,1
   NEXT : XCHG    AX,BX
          ADD     AX,BX
          INC     CL
          CMP     AX,RABBITNUM
          JAE     RESULT
          JMP     NEXT  
  RESULT: MOV     MONTHUNM,CL
          MOV     AH,4CH
          INT     21H
    CODE  ENDS
     END  START



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值