计算机接口与汇编实践-简易加法器

stack segment stack
    db 200 dup(0)
stack ends
data segment
    APORT equ 288h
    CPORT equ 28ah
    CTRL equ 28bh
    num db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h, 7fh, 6fh  ;0~9
data ends
code segment
    assume cs:code,ds:data,ss:stack
    delay MACRO
      local loop_delay
      local flag
      push cx
      push bx
      xor bx, bx
      flag:mov cx, 0ffffh
      loop_delay:loop loop_delay
      inc bx
      cmp bx, 10
      jnz flag
      pop bx
      pop cx
   ENDM
main: mov ax,data          
      mov ds,ax
      mov ax, stack
      mov ss, ax
      mov dx, CTRL
      mov al, 80h  ;写入控制字
      out dx, al
      xor si, si
      xor di, di
loop1:cmp si, 10  ;检查个位是否已经增加到10
      jz carry          ;进位
      mov dx, CPORT
      mov al, 02h
      out dx, al
      mov dx, APORT
      mov al, num[di]   ;显示十位
      out dx, al
      delay
      mov dx, CPORT
      mov al, 01h
      out dx, al
      mov dx, APORT
      mov al, num[si]   ;显示个位
      out dx, al
      inc si           ;个位+1
      delay
      jmp loop1  ;还没有进位个位继续增加
carry:xor si, si   ;进位后将个位清零
      cmp di, 10  ;十位增加到10就从00重新开始
      jz exit
      mov dx, CPORT
      mov al, 02h
      out dx, al
      mov dx, APORT
      mov al, num[di]
      out dx, al
      inc di   ;十位+1
      delay
      jmp loop1
 exit:xor di, di
      jmp loop1
      mov ah,4ch
      int 21h
code ends
     end main

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值