首页 > 其他分享 >解惑一:关于mov指令后面的数据是十进制还是十六进制?AL当中的进位是否影响AH?

解惑一:关于mov指令后面的数据是十进制还是十六进制?AL当中的进位是否影响AH?

时间:2023-11-14 22:36:33浏览次数:38  
标签:十六进制 AH AL al mov 指令 进位

  • Part 1

在看《汇编语言》的时候,书上写了差不多这样意思的一段话(我用自己的话概述一下):

  当指令使用了寄存器AL或者AH,这条指令会认为AL和AH是两个不相关的寄存器,此时AL是作为一个独立的八位寄存器。不要错误地认为,诸如add al,85H    add al,93H的指令产生的进位会存储在AH中。

然后我就去debug里面试了一下,以为debug会自动检测到数据溢出而报错(如下图,a命令下的add al,100)

我一直以为,我输入的add al,100当中的100是十进制,于是我试验了一下,如下图,发现在debug当中,立即数默认为十六进制,而且不能加H\h,否则会报错,所以上面100被识别为100h,超出了八位可以表示的数,指令要求操作数的位数要一致才正确。

在MASM编译器中尝试了一下立即数加h和不加h表示是什么进制的数,如下图所示,在MASM编译器中,加了h会识别为十六进制数,不加h会识别为十进制数。

 

 

  • Part 2

于是,我在MASM中尝试AL进位会不会影响AH的试验,如下图,al=12h+64h(100)+C8(200)=(1)3EH,进位被舍弃,且并未影响AH的值。

同理Debug,al=10h+99h+99h=(1)42h,al的进位溢出丢弃,不影响ah。

 

总结一下:

  • 在Debug程序中,立即数默认为十六进制数,不能加后缀。
  • 在MASM编译器中,立即数不加后缀,认为是十进制数,加了后缀则根据后缀表示的进制来参与指令,例如后缀h为十六进制,后缀b为二进制(刚才试了一下,就不放图了)。
  • al在指令中作为一个独立的八位寄存器,进位不影响其他寄存器,如AH。

 

标签:十六进制,AH,AL,al,mov,指令,进位
From: https://www.cnblogs.com/7-lris/p/17832750.html

相关文章

  • Practical Product Proofs for Lattice Commitments?
    Abstract.Weconstructapracticallattice-basedzero-knowledgeargumentforprovingmultiplicativerelationsbetweencommittedvalues.TheunderlyingcommitmentschemethatweuseisthecurrentlymostefficientoneofBaumetal.(SCN2018),andthesiz......
  • 解决 "VMware Workstation and Device/Credential Guard are not compatible" error i
    https://kb.vmware.com/s/article/2146361 https://communities.vmware.com/t5/VMware-Workstation-Pro/Virtualized-Intel-VT-x-EPT-is-not-supported-on-this-platform/td-p/2875203 https://communities.vmware.com/t5/VMware-Workstation-Player/Virtualized-Intel-VT......
  • P9723 [EC Final 2022] Chinese Checker
    原题链接模拟赛出了,赛时被这个六芒星的形状吓住了,感觉被降智了,呜呜。其实只要转化一下就可以愉快地爆搜了。可以将这两条线看做坐标轴,然后把整个六芒星的的形状转化成横平竖直的样子,大概长这样(\(1\)表示是棋盘):000010000000000000000110000000......
  • CF1542E2 Abnormal Permutation Pairs (hard version) 题解
    怎么会有这么离谱的题目啊。【模板】前缀和优化dp。思路考虑一个基本的东西。由于要求字典序的限制。我们可以枚举最长公共前缀计算。考虑如何求长度为\(i\)的排列有\(j\)个逆序对的数量。设\(dp_{i,j}\)。\[dp_{i,j}=\sum_{k=0}^{i-1}dp_{i-1,j-k}\]就是枚举新的......
  • element ui 设置el-dialog2级弹窗
    步骤1,通过<el-buttontype="text"@click="dialogTableVisible=true">添加活动</el-button>弹出第一层,themeData设置成你循环的数据<el-buttontype="text"@click="dialogTableVisible=true">添加活动</el-button><!--第一层弹......
  • 重写equals方法
    前言:重写equals方法能够学习到多态、instanceof代码实现:publicclassSuper{publicstaticvoidmain(String[]args){Super.User1user1=newSuper.User1();Super.User2user2=newSuper.User2();System.out.println(user2.equals(use......
  • Protobuf - Protocol Buffer Compiler Installation
    $aptinstall-yprotobuf-compiler Togeneratesourcecodefrom.protofiles,firstinstallprotoc,theprotocolbuffercompiler(https://grpc.io/docs/protoc-installation/).Theninstalltwomoremodulesto helpprotocgeneratesourcecodespecificto......
  • hci0 command 0xfc20 tx timeout(Realtek 8761B Chipset, Bluetooth 5.0)
    当前使用的Linux内核版本: 4.4.189插上USBBluetooth5.0Adapter后,dmesg显示如下log:[240.348480]usb3-1.2:newfull-speedUSBdevicenumber6usingehci-platform[240.437834]usb3-1.2:NewUSBdevicefound,idVendor=0bda,idProduct=8771[240.438541]us......
  • C++ 中 <iterator> <functional> <numeric> 库好用的函数
    C++中<iterator><functional><numeric>库好用的函数泰裤辣!<iterator>简述:迭代器省代码用的。std::advance记忆方法:advance-前进。形如:advance(it,step),表示it迭代器自增step步。实现类似于:functionadvance(&it,n): whilen>0: --n ++it whilen<0:......
  • Linux基础43 nginx多server优先级, nginx禁止IP访问, nginx的alias, nginx的try_file
    Nginx常见问题一、nginx多server优先级在开始处理一个http请求时,nginx会去除header头中的Host变量,与nginx.conf中的每个server_name进行匹配,以此决定到底由哪一个server来处理这个请求,但nginx如果配置多个相同的server_name,会导致server_name出现优先级访问冲突。1.准备多个......