如何将两个单词转换为双字变量?具体来说,我希望在这个变量的上半部分有一个单词,而另一个单词则在下半部分。
答案 0 :(得分:2)
下一个代码完成工作(后面的解释):
.stack 100h
.data
upper dw 195
lower dw 22
.code
mov ax, @data
mov ds, ax
;MOVE TWO WORDS TO ONE DWORD.
mov ax, upper
mov cl, 16
shl eax, cl
mov ax, lower
mov ax, 4c00h
int 21h
使用寄存器EAX,将高位字分配给AX。 AX是EAX的低位字,然后你将它向左推16位(SHL),现在高位字不再在AX中,现在它位于EAX的高位字。最后,将低位字分配给AX。在EAX中有两个单词,您可以将值从EAX移动到任何变量。
答案 1 :(得分:1)
一种干净的方法是使用堆栈。
NASM:
push word [wHigh]
push word [wLow]
pop dword [dwResult]
MASM:
push wHigh
push wLow
pop dwResult
答案 2 :(得分:0)
//这是一些PSEUDO代码,假设16位字大小:
单词lowWord =?;
单词highWord =?;
dword combined =((dword)lowWord& 0xFFFF)| (((dword)highWord<<< 16& 0xFFFF0000);
//注意:可能不需要使用0xFFFF和0xFFFF0000进行屏蔽