⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 singledivide.asm

📁 本程序用汇编语言实现单精度整数的除法
💻 ASM
字号:
 .file "example2.asm"
      .title "double division"

      .mmregs 
      DATA_DP .usect  "filter_vars",0    ;定义数据页指针
      STACK    .usect  "stack",60    ;定义堆栈大小
      start: st     #80H,ar0    ;初始化ar0
      st     #0h,ar4    ;初始化ar4
      st     #100h,ar5    ;初始化ar5
      st     #101h,ar6    ;初始化ar6
      LD     #DATA_DP,DP    ;初始化页指针
      STM   #STACK,SP    ;初始化堆栈指针
      ld     #-1000,a    ;被除数送到A累加器
      ld     #21,b    ;除数送到B累加器
      stl     a,*ar5    ;保存被除数
      stl     b,*ar6    ;保存除数
      rsbx     tc    ;置tc位为0
      st     #0h,*ar3 ;*ar3清0
      nop ;空操作
      bc     jump0,agt ;判断被除数符号
      ssbx     tc    ;置tc位为1
      abs     a            ;取a的绝对值
      st     #1h,ar4 ;将1送到ar4
      jump0: bc     jump1,bgt    ;判断除数符号
      xorm    #1h,ar4 ;ar4和1异或
      abs     b              ;取b的绝对值
      jump1: st     #0,*ar1    ;利用减法指令做除法运算
      dst     b,*ar0
      rsbx     c16
      ld     #-1,b 
      nop 
      dsub     *ar0,a
      bc     jump5,alt 
      jump2: add     #1,b
      dsub     *ar0,a
      bc     jump2,ageq 
      add     #1,b
      dadd     *ar0,a 
      bc     jump4,ntc 
      banz     jump3,*ar4
      nop
      nop
      b   jump6 
      jump3: neg     a      ;修改结果和余数的符号
      neg     b 
      b     jump6
      jump4: dst     b,*ar1 
      ;ld     *ar3,b
      bc     jump6,bgt 
      dld     *ar1,b
      b     jump3
      jump5: ld     *ar5,a      ;被除数小于除数,原数放入累加器A
      ld     *ar6,b         ;被除数小于除数,原数放入累加器B
      ssbx     1,10
      jump6: b     jump6         ;程序结束

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -