在学习汇编语言的时候有这么一道题不能理解,希望高手解答,谢谢!
程序是这样的,很简单的程序assumecs:code,ds:data,ss:stackdatasegmentdw0123h,0456h,0789h,0abch,0defh...
程序是这样的,很简单的程序
assume cs:code,ds:data,ss:stack
data segment
dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
data ends
stack segment
dw 0,0,0,0,0,0,0,0
stack ends
code segment
start: mov ax,stack
mov ss,ax
mov sp,16
mov ax,data
mov ds,ax
push ds:[0]
push ds:[2]
pop ds:[2]
pop ds:[0]
mov ax,4c00h
int 21h
code ends
end start
调试之后
-r
AX=0000 BX=0000 CX=0042 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0C76 ES=0C76 SS=0C86 CS=0C88 IP=0000 NV UP EI PL NZ NA PO NC
0C88:0000 B8870C MOV AX,0C87
-d 0c86:0 f
0C86:0000 23 01 56 04 89 07 BC 0A-EF 0D ED 0F BA 0C 87 09 #.V.............
为什么所有的数据高位和低位都对调了?不是只PUSH了【0】和【2】嘛?也没有什么循环机制 展开
assume cs:code,ds:data,ss:stack
data segment
dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
data ends
stack segment
dw 0,0,0,0,0,0,0,0
stack ends
code segment
start: mov ax,stack
mov ss,ax
mov sp,16
mov ax,data
mov ds,ax
push ds:[0]
push ds:[2]
pop ds:[2]
pop ds:[0]
mov ax,4c00h
int 21h
code ends
end start
调试之后
-r
AX=0000 BX=0000 CX=0042 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0C76 ES=0C76 SS=0C86 CS=0C88 IP=0000 NV UP EI PL NZ NA PO NC
0C88:0000 B8870C MOV AX,0C87
-d 0c86:0 f
0C86:0000 23 01 56 04 89 07 BC 0A-EF 0D ED 0F BA 0C 87 09 #.V.............
为什么所有的数据高位和低位都对调了?不是只PUSH了【0】和【2】嘛?也没有什么循环机制 展开
3个回答
展开全部
1、MOV CL,10
MUL CL ;乘的结果存放在AX中
2、子程序参数传递方法有
寄存器传递参数、堆栈传递参数、制定存储单元(内存RAM)传递参数、CALL后续区传递参数
3、好像不好画图,就文字解释一下也一样。
1)MOV AX,8057H
SS=FFA0H,SP=00B0H
2)PUSH AX
SS=FFA0H,SP=00AEH,
FFA0:00B0=80H,FFA0:00AF=57H
3)MOV AX,0F79H
SS=FFA0H,SP=00AEH
4)PUSH AX
SS=FFA0H,SP=00ACH,
FFA0:00AE=0FH,FFA0:00AD=79H
5)POP BX
SS=FFA0H,SP=00AEH,BX=0F79H
FFA0:00AE=0FH FFA0:00AD=79H
POP[BX]
6)SS=FFA0H,SP=00B0H,[BX]=8057H
FFA0:00B0=80H,FFA0:00AF=57H
XOR AX,AX
ADD AX,789H ;AX=(0789 )H
SUB AX,200H ;AX=(0589 )H
ADD AL,AH ;AX=(058E)H
MOV AX,0
ADD AX,110
MOV CX,4
P0:SUB AX,CX
LOOP P0:
AX=(64)H,CX=(00)H,CF=(0)
MUL CL ;乘的结果存放在AX中
2、子程序参数传递方法有
寄存器传递参数、堆栈传递参数、制定存储单元(内存RAM)传递参数、CALL后续区传递参数
3、好像不好画图,就文字解释一下也一样。
1)MOV AX,8057H
SS=FFA0H,SP=00B0H
2)PUSH AX
SS=FFA0H,SP=00AEH,
FFA0:00B0=80H,FFA0:00AF=57H
3)MOV AX,0F79H
SS=FFA0H,SP=00AEH
4)PUSH AX
SS=FFA0H,SP=00ACH,
FFA0:00AE=0FH,FFA0:00AD=79H
5)POP BX
SS=FFA0H,SP=00AEH,BX=0F79H
FFA0:00AE=0FH FFA0:00AD=79H
POP[BX]
6)SS=FFA0H,SP=00B0H,[BX]=8057H
FFA0:00B0=80H,FFA0:00AF=57H
XOR AX,AX
ADD AX,789H ;AX=(0789 )H
SUB AX,200H ;AX=(0589 )H
ADD AL,AH ;AX=(058E)H
MOV AX,0
ADD AX,110
MOV CX,4
P0:SUB AX,CX
LOOP P0:
AX=(64)H,CX=(00)H,CF=(0)
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
采用了小端存储方式,在该存储方式下,所有的的数据高位和低位都对调,这与程序没什么关系 。
比如存储一个数字:0x12345678
在小端存储方式下,地址从低到高存储的数据依次为:34 12 78 56
在大端存储方式下,地址从低到高存储的数据依次为:12 34 56 78
比如存储一个数字:0x12345678
在小端存储方式下,地址从低到高存储的数据依次为:34 12 78 56
在大端存储方式下,地址从低到高存储的数据依次为:12 34 56 78
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询