faly 发表于 2013-5-31 17:57:16

王爽汇编语言 第五章实验,帮帮忙

下面是题和答案,对于答案我有几点不明白问题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的长度)

熊文杰 发表于 2013-5-31 17:57:17

楼主的第一个问题,多的一个字节是 汇编指令转换成机器码时候,第2个答案的机器码 要比 第一个答案的机器码多1一个字节

第二个问题,复制程序从mov ax ,__这句开始,一直到mov ax,4c00h结束,不包括mov ax,4c00h这句。这里的大小计算是根据debug上机之后 对于mov ax,4c00h这句的ip 与movax,__这句的ip差值

第三个问题 和上面的一个算法,通过上级对比两句的ip值,相减可以得到。如果楼主可以把相应的汇编语句转换成机器码,也可以知道,这两句转换成机器码之后是占5个字节的

如果还有什么不明白,可以再问。

熊文杰 发表于 2013-5-31 19:08:13

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个字节

faly 发表于 2013-5-31 19:28:07

熊文杰 发表于 2013-5-31 17:57 static/image/common/back.gif
楼主的第一个问题,多的一个字节是 汇编指令转换成机器码时候,第2个答案的机器码 要比 第一个答案的机器码 ...

谢谢,帮我解答,:P

易道 发表于 2013-6-5 04:27:26

块五点了我竟然还没升级不好意思只能先顶下你了

bafengao 发表于 2013-6-5 13:13:36

顶顶楼主 向你学习
页: [1]
查看完整版本: 王爽汇编语言 第五章实验,帮帮忙