王爽汇编语言 第五章实验,帮帮忙
下面是题和答案,对于答案我有几点不明白问题1:答案2比答案1中的cs多了一个1 ,这里是指code比cs 多了一个字节吗?问题2:复制程序从哪里开始,到哪里结束,怎么算出大小程序大小?问题3:答案3中说:因为在载入程序时,cx保存程序的长度,减去5是为减去mov ax,4c00h和int 21h的长度 我想问mov ax,4c00h 和int 21h长度是5个字节吗?怎么算的?(3)下面的程序功能是将“mov ax,4c00h"之前的指令复制到内存0:200处,补全程序。上机调试,跟踪运行结果。assume cs:code code segment mov ax, code ;或mov ax, cs mov ds,ax mov ax,0020h mov es,ax mov bx,0 mov cx, 18h ;或mov cx, 17h ;或sub cx,5s: mov al, mov es:,al inc bx loop s mov ax,4c00h int 21h code ends end 此题有多个答案,因为mov用在寄存器之间传送数据的指令是2个字节,用在寄存器和立即数之间是3个字节答案1:mov ax,cs(占2个字节) mov cx,17 答案2:mov ax,code (占3个字节) mov cx,18 答案3:mov ax,cs 或mov ax,code 把mov cx,改成 sub cx,5(因为在载入程序时,cx保存程序的长度,减去5是为减去mov ax,4c00h和int 21h的长度)
楼主的第一个问题,多的一个字节是 汇编指令转换成机器码时候,第2个答案的机器码 要比 第一个答案的机器码多1一个字节
第二个问题,复制程序从mov ax ,__这句开始,一直到mov ax,4c00h结束,不包括mov ax,4c00h这句。这里的大小计算是根据debug上机之后 对于mov ax,4c00h这句的ip 与movax,__这句的ip差值
第三个问题 和上面的一个算法,通过上级对比两句的ip值,相减可以得到。如果楼主可以把相应的汇编语句转换成机器码,也可以知道,这两句转换成机器码之后是占5个字节的
如果还有什么不明白,可以再问。 0C79:0000 B8790C MOV AX,0C79
0C79:0003 8ED8 MOV DS,AX
0C79:0005 B82000 MOV AX,0020
0C79:0008 8EC0 MOV ES,AX
0C79:000A BB0000 MOV BX,0000
0C79:000D B91800 MOV CX,0018
0C79:0010 8A07 MOV AL,
0C79:0012 26 ES:
0C79:0013 8807 MOV ,AL
0C79:0015 43 INC BX
0C79:0016 E2F8 LOOP 0010
B8004C MOV AX,4C00
0C79:001B CD21 INT 21
看最后两句的汇编转换成机器码是 B8004C 3个字节 和CD21 2个字节
熊文杰 发表于 2013-5-31 17:57 static/image/common/back.gif
楼主的第一个问题,多的一个字节是 汇编指令转换成机器码时候,第2个答案的机器码 要比 第一个答案的机器码 ...
谢谢,帮我解答,:P 块五点了我竟然还没升级不好意思只能先顶下你了 顶顶楼主 向你学习
页:
[1]