qq_46537649 2021-06-11 11:19 采纳率: 0%
浏览 16

小白不会。8086汇编

 

  • 写回答

1条回答 默认 最新

  • 张彦峰ZYF Java领域优质创作者 2024-04-13 19:03
    关注
    
    section .data
        data        db 100, -50, 0, 25, -10, 50, -5, 0, 30, -15  ; 假设数据存放在这里
    
    section .bss
        posit       resb 100  ; 存放正数和零
        negat       resb 100  ; 存放负数
    
    section .text
        global _start
    
    _start:
        mov esi, data       ; 将数据区的起始地址加载到esi寄存器
        mov edi, posit      ; 将POSIT的起始地址加载到edi寄存器
        mov ebx, negat      ; 将NEGAT的起始地址加载到ebx寄存器
    
        mov ecx, 100        ; 循环100次,处理所有数据
    loop_start:
        mov al, [esi]       ; 将当前数据加载到al寄存器
    
        test al, al         ; 检查当前数据是否为正数或零
        jns positive        ; 如果是正数或零,跳转到positive标签
        mov [ebx], al       ; 将负数存放到NEGAT
        inc ebx             ; 更新NEGAT地址
        jmp next_iteration  ; 跳转到下一次循环
    
    positive:
        mov [edi], al       ; 将正数或零存放到POSIT
        inc edi             ; 更新POSIT地址
    
    next_iteration:
        inc esi             ; 更新数据区地址
        loop loop_start     ; 循环直到处理完所有数据
    
        ; 输出POSIT中的数据
        mov esi, posit
        mov ecx, edi        ; 计算POSIT中数据的数量
        mov edx, ecx
        dec edx             ; ecx为POSIT中数据数量,edx为循环计数器
        mov eax, 4
        mov ebx, 1
        mov ecx, esi
        int 0x80
    
        ; 输出NEGAT中的数据
        mov esi, negat
        mov ecx, ebx        ; 计算NEGAT中数据的数量
        sub ecx, edx
        dec ecx             ; ebx为NEGAT中数据数量,edx为POSIT中数据数量
        mov eax, 4
        mov ebx, 1
        mov ecx, esi
        int 0x80
    
        ; 退出程序
        mov eax, 1
        xor ebx, ebx
        int 0x80
    
    评论

报告相同问题?

悬赏问题

  • ¥15 电脑最近经常蓝屏,求大家看看哪的问题
  • ¥60 高价有偿求java辅导。工程量较大,价格你定,联系确定辅导后将采纳你的答案。希望能给出完整详细代码,并能解释回答我关于代码的疑问疑问,代码要求如下,联系我会发文档
  • ¥50 C++五子棋AI程序编写
  • ¥30 求安卓设备利用一个typeC接口,同时实现向pc一边投屏一边上传数据的解决方案。
  • ¥15 SQL Server analysis services 服务安装失败
  • ¥15 基于面向对象的图书馆借阅管理系统
  • ¥15 opencv图像处理,需要四个处理结果图
  • ¥20 centos linux 7.9安装php8.2.18不支持mysqli模块的问题
  • ¥15 stata空间计量LM检验
  • ¥15 关于k8s node节点被释放后如何驱逐节点并添加新节点