汇编语言的一个问题

来源:百度知道 编辑:UC知道 时间:2024/06/22 06:27:44
把它考虑为intel computer system
.data
varB BYTE 32h, 18h, 02h, 05h
varW WORD 6433h, 1AB2h
wordList LABEL WORD
varD DWORD 12365478h
array1 BYTE 5 DUP ("BEST"),0

.code
mov ax, WORD PTR [varB+2] ;ax=?
mov ecx, LENGTHOF array1 ;ecx=?
mov bl, BYTE PTR [varW+2] ;bl=?
mov ax, WORD PTR [varD+2] ;ax=?
mov cx, wordlist ;cx=?
mov eax, DWORD PTR varW ;eax=?

请各位赐教,给出详细的说明。说明详细并合理的追加30分。
什么是低放低的原则, 我就是想问这个。一楼的答案基本正确。
请各位大虾解释,谢谢!

低放低的原则就是首先存储低位数据,然后再存储高位数据.
对于单字节存放易于理解,直接存储在指定位置即可,对于多于一字节的内容,就存在两种放法,IBM处理器采用big_endian存储(高放低)intel处理器采取small_endian存储方式(低放低),它的不同就在于是低字节还是高字节先存储。
如AX=0102(高字节AH,低字节AL),MOV [3000],AX当按低放低原则时,3000 地址为02,3001O为01,而按高放低原则,高字节先放,则3000地址为AH=01,3001为02

1,mov ax, WORD PTR [varB+2] ;ax=?
varB BYTE 32h, 18h, 02h, 05h
AX=0502H
varB+2指向字节数据02,取一个字(低字节02高字节05)
2,mov ecx, LENGTHOF array1 ;ecx=?
array1 BYTE 5 DUP ("BEST"),0
ECX=21(15H)
求array1字节数,5×4+1=21
3,mov bl, BYTE PTR [varW+2] ;bl=?
varW WORD 6433h, 1AB2h
BL=B2,道理同上,取低字节(第一个字节)
4,mov ax, WORD PTR [varD+2] ;ax=?
varD DWORD 12365478h 存放顺序:78543612
AX=1236H 同上
5,mov cx, wordlist ;cx=?
wordList LABEL WORD
varD DWORD 12365478h 存放顺序:78543612
CX=5478H(wordList与varD都是指向同一地址,但wordList为WORD型,varD为DWORD型)
6,mov eax, DWORD PTR varW ;eax=?
varW WORD 6433h, 1AB2h 存放顺序:3364B21A
EAX=1AB2