gpt4 book ai didi

assembly - MASM 程序集将 8 位寄存器移动到 16 位寄存器(即 mov cx, ch)

转载 作者:行者123 更新时间:2023-12-04 17:08:50 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





MOV 8 bit to 16 bit register (al to bx)

(1 个回答)


1年前关闭。




我决定学习一门汇编语言。我正在使用 this 8086 tutorial .在底部的练习是找出一些指令中的错误,其中之一是

mov cx, ch 

我在这个主题上发现了一些类似的问题,解释了如何实现它,但现在我想知道 为什么禁止这种操作?

让我们假设我在 CH 中有 10d = 00001010b 并且想要将它放到 CL 并同时删除 CH。 mov cx, ch似乎这样做是因为它将 10d 显示为 16bit 00000000 00001010 并将其分别放入 CH 和 CL(整个 CX)

它有什么问题,为什么给定的教程要求在此表达式中查找错误?

最佳答案

mov指令用于在相同大小的操作数之间移动。您想要的是扩展 8 位 ch进入 16 位 cx .有两个指令可用于此目的:

movzx cx,ch  ; zero-extends ch into cx. the upper byte of cx will be filled with zeroes
movsx cx,ch ; sign-extends ch into cx. the upper byte of cx will be filled with the most significant bit of ch

在这种特殊情况下完成相同事情的另一种方法是:
shr cx,8  ; zero-extend
sar cx,8 ; sign-extend

关于assembly - MASM 程序集将 8 位寄存器移动到 16 位寄存器(即 mov cx, ch),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29716796/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com