• 【汇编程序】BUF为首址的100个字节单元用原码表示的有符号数依次编程用补码表示的有符号数


    对有符号数据进行取补码的的时候,我们可以先将最高位清零 使用and ax,7f

    然后 在使用neg 指令对ax 中的数据进行取反加1 就可以获取到。

    ;将内存中以BUF为首址的100个字节单元用原码表示的有符号数依次编程用补码表示的有符号数
    ;依次放在原100个字节单元中   
    data segment 
        buf db 200 dup(?)    ;定义200个一字节的空间  用?来进行占位
        count equ 100        ;equ等值伪指令equ 常数值100赋给符号名count
    data ends
    stack segment para stack 'stack'  ;para 定位类型 stack 组合栈 '分类名' statck
        sta db 100 dup(?)    ;定义100个字节的空间 用?来进行占位
    stack ends
    code segment 
        assume cs:code,ds:data,ss:stack
     begin:mov ax,data       ;将数据段的段基址赋值给ax
        mov ds,ax            ;ax 数据段赋值给ds
        mov cx,count;         //串长送
        lea bx,buf            ;buf首地址送bx
      l2:test byte ptr[bx],80h ;[bx]最高位是否是0  对两个操作数进行 逻辑与操作 并修改标志位 但不会送结果
        jz l1;为0转l1   相当于最高位是一个0 不是一个有符号数 是一个正数 所以不需要修改 正数的补码就是其补码
        and byte ptr[bx],7fh;[bx]最高位清0   最高位清零
        neg byte ptr[bx];求负数     neg指令 对存储器中的数据 取反加1 获取的就是负数的补码形式
      l1:inc bx;指向下一个单元
         loop l2;cx-1>cx 不为0转l2
         mov ah,4ch     ;程序终止
         int 21h       ;返回dos程序
       code ends
    end begin
  • 相关阅读:
    【HDU 2093】考试排名(结构体水题)
    【HDU 2037】今年暑假不AC
    【HDU 1234】开门人和关门人(水题)
    【HDU 1005】Number Sequence
    第一篇博客——ACM之路!
    深度学习全家福
    搭建 keras + tensorflow
    MSCI 成份股 清单
    SK-Learn 全家福
    创业笔记 -- 网站正式对外运营
  • 原文地址:https://www.cnblogs.com/qxlxi/p/12860891.html
Copyright © 2020-2023  润新知