您当前的位置: 首页 > 

跋扈洋

暂无认证

  • 4浏览

    0关注

    221博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

汇编语言---统计数据区的正、负数并分开存放

跋扈洋 发布时间:2021-01-01 22:32:09 ,浏览量:4

统计数据区的正、负数并分开存放
  • 配置环境
  • 题目要求
  • 编辑程序
  • 运行程序
  • 后续

配置环境
  1. 首先双击下载程序进行下载。(没有安装程序的,可以下载我为大家准备的安装文件。) 不会安装的可以看一下文件

  2. 将debug.exe放入C盘(没有debug的自行下载)

  3. 打开DOXBos 在这里插入图片描述

  4. 将masm文件放入D盘(没有masm的自行下载)

  5. 更改masm文件为123(任意),在文件夹中创建文件123.asm(任意)。

  6. 在DOXBos程序中 输入mount C D:\123

  7. 输入C:

  8. 打开123.asm编写程序

  9. 第6、7步可以省略,省略办法见这篇文章,设置之后就不必每次都输入

题目要求

设在BUF数据区有一组有符号字节数据,试编程实现将这组数据区当中的正数和负数分开存放在两个不同的数据区中,并统计正数和负数的个数。假设:BUF数据区中只有正数和负数的情况。

编辑程序
DATA    SEGMENT
BUF     DB COUNT        ;BUF中的数据个数
        DB  23H,67H,0ABH,0F6H,49H
COUNT=$-BUF-1
PBUF    DB 0            ;正数个数
        DB COUNT DUP(0) ;正数数据区
NBUF    DB 0            ;负数个数
        DB COUNT DUP(0) ;负数数据区
DATA    ENDS
CODE SEGMENT
        ASSUME CS:CODE,DS:DATA,ES:DATA
START:
        MOV AX,DATA
        MOV DS,AX
        MOV ES,AX
        LEA SI,BUF+1    ;SI指向BUF数据区
        LEA DI,PBUF+1   ;DI指向正数区
        LEA BX,NBUF+1   ;BX指向负数区
        MOV CL,BUF      ;循环次数给CX
        MOV CH,0        ;
        CLD
NEXT:   
        LODSB           ;从数据区取出一个数据
        CMP AL,0        
        JS NNUM         ;判断AL中的数是不是负数
        STOSB           ;是正数存入正数区
        INC PBUF        ;累计正数的个数
        JMP CONT 
NNUM:   
        XCHG BX,DI      ;通过交换指令使DI指向负数区
        STOSB           ;是负数存入负数区
        INC PBUF        ;负数累加
        XCHG BX,DI      ;通过交换指令恢复DI的值
CONT:
        LOOP NEXT       ;数据还没有处理完,转向NEXT处继续
        MOV AH,4CH
        INT 21H
CODE    ENDS
        END START


运行程序
  1. masm 123.asm 在这里插入图片描述如果出现错误根据提示进行更改

  2. link.123

  3. 运行123.exe

  4. 运行成功

  5. 反汇编(为了输入方便,将123.exe改为1.exe,这点大家不用更改,维持你文件名即可)

debug 1.exe

然后用U命令

-u

得到反汇编结果

  1. 运行结果,查看寄存器(T命令或者G命令) 如果用T命令一步一步执行 可以输入
debug 1.exe
-r
-t
...
(直到得出结果)

如果用G命令全部运行

debug 1.exe
-G 076A:0018  ;(这里是你想要运行到的程序地址)
后续

如果想了解更多物联网、智能家居项目知识,可以关注我的项目实战专栏。 欢迎关注公众号。 在这里插入图片描述

编写不易,感谢支持。

关注
打赏
1663745539
查看更多评论
立即登录/注册

微信扫码登录

0.1149s