注册 登录
编程论坛 汇编论坛

汇编语言程序问题

雨枫 发布于 2010-06-05 20:34, 821 次点击
disp macro msg

lea dx,msg

mov ah,9

int 21h

mov ah,4ch

int 21h

endm

stack segment stack

db 256 dup(0)

stack ends

data segment

parm    db 16 dup(?)

brtable dw offset bra,offset brb,offset brc

dw offset brd,offset bre,offset brf

msga    db 'I like my IBM-PC!$'

msgb    db 'How are you!$'

msgc    db 'Nibao College$'

msgd    db 'This is a sample$'

msge    db 'Wellcome use my coputer!$'

msgf    db 'Theassemder language of 8088$'

errms   db 'Error!! invalid parameter!!$'

data ends

code segment

assume cs:code,ds:data,ss:stack

start: mov ax,data

mov es,ax

mov si,80h

lea di,parm

mov cx,16

cld

rep movsb

mov ds,ax

cmp parm,2

jc err

mov al,parm+2

sub al,30h

jc err

cmp al,6

jnc err

lea bx,brtable

cbw

add ax,ax

add bx,ax

jmp [bx]

err: disp errms

bra: disp msga

brb: disp msgb

brc: disp msgc

brd: disp msgd

bre: disp msge

brf: disp msgf

code  ends

end start

实验步骤:

1、输入并汇编此程序。要求生成一个 .LST文件。用TYPE命令检查 .LST文件,观察宏替换命令产生的指令集。

2、将OBJ文件连接成EXE文件(假设为AA.EXE)。

3、用命令DEBUG AA.EXE XXX (XXX为任意字符串)将AA.EXE带参数调入DEBUG用D命令观察DS:0080处的命令行,记录80H处的内容和字符个数的关系。

 

问题:上面的程序有几个语句不懂,

mov si,80h :从80h这个地址开始的数据是什么?

为什么用debug调试的时候要带一个参数?

1 回复
#2
东海一鱼2010-07-05 15:25
80h这个位置是exe程序的参数区。

DOS在执行exe程序时会在exe执行程序头部建立(program segment prefix,简称 PSP)就是exe的执行环境块。

debug调试不一定要带参数。你也可以用L + N 命令加载调试这个exe文件。
1