Assembly language 检测点3.2
检测点3.2(1)补全下面的程序,使其可以将10000H-1000FH中的8个字,逆序拷贝到20000H-2000FH中。
mov ax,1000H
mov ds,ax
mov ax,2000H
mov ss,ax
mov sp,10h
push
push
push
push
push
push
push
push
检测点3.2
(2)补全下面的程序,使其可以将10000H-1000FH中的8个字,逆序拷贝到20000H-2000FH中。
mov ax,2000H
mov ds,ax
mov ax,1000H
mov ss,ax
mov sp,0
pop
pop
pop
pop
pop
pop
pop
pop
实验2 用机器指令和汇编指令编程
(1)使用DEBUG,将上面的程序段写入内存,逐条执行,根据指令执行后的实际运行情况填空。
mov ax,ffff
mov ds,ax
mov ax,2200
mov ss,ax
mov sp,0100
mov ax, ;ax= 5BEAH
add ax, ;ax= 5CCAH
mov bx, ;bx= 31F0H
add bx, ;bx= 6122H
push ax ;sp= 00FEH ,修改的内存单元地址是 2200:00FE 内容为 5CCAH
push bx ;sp= 00FCH ,修改的内存单元地址是 2200:00FC 内容为 6122H
pop ax ;sp= 00FCH ,ax= 6122H
pop bx ;sp= 00FEH ,bx= 5CCAH
push ;sp= 00FEH ,修改的内存单元地址是 2200:00FE 内容为 31F0
push ;sp= 00FCH ,修改的内存单元地址是 2200:00FC 内容为 2F32
此实验答案不定,需根据每台机器的实际运行情况。
Microsoft(R) Windows DOS
(C)Copyright Microsoft Corp 1990-2001.
C:DOCUME~1ADMINI~1>debug
-a
0C1C:0100 mov ax,ffff
0C1C:0103 mov ds,ax
0C1C:0105 mov ax,2200
0C1C:0108 mov ss,ax
0C1C:010A mov sp,0100
0C1C:010D mov ax,
0C1C:0110 add ax,
0C1C:0114 mov bx,
0C1C:0118 add bx,
0C1C:011C push ax
0C1C:011D push bx
0C1C:011E pop ax
0C1C:011F pop bx
0C1C:0120 push
0C1C:0124 push
0C1C:0128
-r
AX=0000BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000
DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=0100 NV UP EI PL NZ NA PO NC
0C1C:0100 B8FFFF MOV AX,FFFF
-t
AX=FFFFBX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000
DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=0103 NV UP EI PL NZ NA PO NC
0C1C:0103 8ED8 MOV DS,AX
-t
AX=FFFFBX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000
DS=FFFFES=0C1CSS=0C1CCS=0C1CIP=0105 NV UP EI PL NZ NA PO NC
0C1C:0105 B80022 MOV AX,2200
-t
AX=2200BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000
DS=FFFFES=0C1CSS=0C1CCS=0C1CIP=0108 NV UP EI PL NZ NA PO NC
0C1C:0108 8ED0 MOV SS,AX
-t
AX=2200BX=0000CX=0000DX=0000SP=0100BP=0000SI=0000DI=0000
DS=FFFFES=0C1CSS=2200CS=0C1CIP=010D NV UP EI PL NZ NA PO NC
0C1C:010D A10000 MOV AX, DS:0000=5BEA
-d ffff:0 f
FFFF:0000EA 5B E0 00 F0 31 32 2F-32 35 2F 30 37 00 FC 59 .[...12/25/07..Y
-t
AX=5BEABX=0000CX=0000DX=0000SP=0100BP=0000SI=0000DI=0000
DS=FFFFES=0C1CSS=2200CS=0C1CIP=0110 NV UP EI PL NZ NA PO NC
0C1C:0110 03060200 ADD AX, DS:0002=00E0
-t
AX=5CCABX=0000CX=0000DX=0000SP=0100BP=0000SI=0000DI=0000
DS=FFFFES=0C1CSS=2200CS=0C1CIP=0114 NV UP EI PL NZ NA PE NC
0C1C:0114 8B1E0400 MOV BX, DS:0004=31F0
-t
AX=5CCABX=31F0CX=0000DX=0000SP=0100BP=0000SI=0000DI=0000
DS=FFFFES=0C1CSS=2200CS=0C1CIP=0118 NV UP EI PL NZ NA PE NC
0C1C:0118 031E0600 ADD BX, DS:0006=2F32
-t
AX=5CCABX=6122CX=0000DX=0000SP=0100BP=0000SI=0000DI=0000
DS=FFFFES=0C1CSS=2200CS=0C1CIP=011C NV UP EI PL NZ NA PE NC
0C1C:011C 50 PUSH AX
-t
AX=5CCABX=6122CX=0000DX=0000SP=00FEBP=0000SI=0000DI=0000
DS=FFFFES=0C1CSS=2200CS=0C1CIP=011D NV UP EI PL NZ NA PE NC
0C1C:011D 53 PUSH BX
-t
AX=5CCABX=6122CX=0000DX=0000SP=00FCBP=0000SI=0000DI=0000
DS=FFFFES=0C1CSS=2200CS=0C1CIP=011E NV UP EI PL NZ NA PE NC
0C1C:011E 58 POP AX
-t
AX=6122BX=6122CX=0000DX=0000SP=00FEBP=0000SI=0000DI=0000
DS=FFFFES=0C1CSS=2200CS=0C1CIP=011F NV UP EI PL NZ NA PE NC
0C1C:011F 5B POP BX
-t
AX=6122BX=5CCACX=0000DX=0000SP=0100BP=0000SI=0000DI=0000
DS=FFFFES=0C1CSS=2200CS=0C1CIP=0120 NV UP EI PL NZ NA PE NC
0C1C:0120 FF360400 PUSH DS:0004=31F0
-t
AX=6122BX=5CCACX=0000DX=0000SP=00FEBP=0000SI=0000DI=0000
DS=FFFFES=0C1CSS=2200CS=0C1CIP=0124 NV UP EI PL NZ NA PE NC
0C1C:0124 FF360600 PUSH DS:0006=2F32
-t
AX=6122BX=5CCACX=0000DX=0000SP=00FCBP=0000SI=0000DI=0000
DS=FFFFES=0C1CSS=2200CS=0C1CIP=0128 NV UP EI PL NZ NA PE NC
0C1C:0128 16 PUSH SS
-q
第一道题能详细点吗,,想了半天不知道,大神,先谢谢了 我看看咯!! 但是最后一个问题,执行完栈的布局后,还没有进行push 指令,栈的内容已经被改变了,我刚学到哪里。想不通,各位学友可以解释一下吗? 作业
本帖最后由 zmxfx 于 2016-7-30 00:06 编辑
hexiaofengye 发表于 2015-6-20 00:04
但是最后一个问题,执行完栈的布局后,还没有进行push 指令,栈的内容已经被改变了,我刚学到哪里。想不通 ...
mov bx,1000h
mov ss,bx
mov sp,0
这三段指令执行后,把栈地址指向1000h:0000h,后面执行pop指令等于是把内存从10000h到1ffffh视为一个栈,题目只是要将10000H-1000FH中的8个字,逆序拷贝到20000H-2000FH中,所以不管里面的数据什么。
刚学到这,一点心得。有不对的地方希望鱼友批评指正!! 多谢
多谢 谢谢。朋友 楼主,
检测点3.2
(1)补全下面的程序,使其可以将10000H-1000FH中的8个字,逆序拷贝到20000H-2000FH中。
(2)补全下面的程序,使其可以将10000H-1000FH中的8个字,逆序拷贝到20000H-2000FH中。
(1)和(2)问题一样,应该是写错了。
页:
[1]