关于汇编语言的问题。。。恩,求答案,应该不是很难.
.modelsmall.stack100h.dataX1db?,1,23HX2db$-x1,'a','b','cdef'X3dw10,100,1000,10000X4db...
.model small
.stack 100h
.data
X1 db ?,1,23H
X2 db $-x1,'a','b','cd ef'
X3 dw 10,100,1000,10000
X4 db 2 DUP (3 DUP (1,2,3))
.code
Main proc
Mov ax,@data
Mov ds,ax
Mov al,x1
Mov bl,x2
Mov cx,x3
Mov dx,x3+4
Mov ax,4c00h
Int 21h
Main endp
End main
注释:db伪指令用于分配一个字节单元的存储空间,dw伪指令用于分配一个字单元的存储空间。
操作步骤如下:
(1)执行masm.exe对源程序进行汇编,生成.obj文件和.lst文件。
(2)执行连接Link生成.exe文件。
(3)利用debug调试程序:
(4)分别用T命令和g 命令执行程序。
【思考题】:
(1)记录程序处于初始执行程序状态时(尚未执行时)寄存器的值和单步执行过程中寄存器的值,哪些寄存器的值发生了变化?变化的原因是什么?
(2)寄存器IP的变化有什么意义?
(3)用T命令跟踪执行程序直到“INT 21H”指令,内存单元X2和X4 的逻辑地址是什么?寄存器CX和内存单元X4最终的值是什么?
(4)为什么需要程序中的前两条指令mov ax,@data和mov ds,ax,它们的作用是什么?如果缺少这两条指令程序将会如何?
(5)使用简化结构的点命令描述,上述程序还可作如何修改?
【回答题】:
(1) 画出数据段每个单元数据内容
(2) 写出程序运行后AX、BX、CX、DX的值
求比较详细的答案,按照没问这么回答,满意答案可以加分~~ 展开
.stack 100h
.data
X1 db ?,1,23H
X2 db $-x1,'a','b','cd ef'
X3 dw 10,100,1000,10000
X4 db 2 DUP (3 DUP (1,2,3))
.code
Main proc
Mov ax,@data
Mov ds,ax
Mov al,x1
Mov bl,x2
Mov cx,x3
Mov dx,x3+4
Mov ax,4c00h
Int 21h
Main endp
End main
注释:db伪指令用于分配一个字节单元的存储空间,dw伪指令用于分配一个字单元的存储空间。
操作步骤如下:
(1)执行masm.exe对源程序进行汇编,生成.obj文件和.lst文件。
(2)执行连接Link生成.exe文件。
(3)利用debug调试程序:
(4)分别用T命令和g 命令执行程序。
【思考题】:
(1)记录程序处于初始执行程序状态时(尚未执行时)寄存器的值和单步执行过程中寄存器的值,哪些寄存器的值发生了变化?变化的原因是什么?
(2)寄存器IP的变化有什么意义?
(3)用T命令跟踪执行程序直到“INT 21H”指令,内存单元X2和X4 的逻辑地址是什么?寄存器CX和内存单元X4最终的值是什么?
(4)为什么需要程序中的前两条指令mov ax,@data和mov ds,ax,它们的作用是什么?如果缺少这两条指令程序将会如何?
(5)使用简化结构的点命令描述,上述程序还可作如何修改?
【回答题】:
(1) 画出数据段每个单元数据内容
(2) 写出程序运行后AX、BX、CX、DX的值
求比较详细的答案,按照没问这么回答,满意答案可以加分~~ 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询