计算机软件技术基础实验一
试验题目:分支程序、循环程序和子程序的设计
实验目的:
使用分支结构编写程序,要求掌握利用间接转移指令JMP BX实现多岔分支的方法;宏替换指令MACRO及ENDM;符号扩展指令CBW。
掌握多重循环程序和排序程序设计方法。
掌握子程序的设计方法。
实验步骤及代码:
一、分支程序
分支程序步骤
输入并汇编此程序。要求生成一个 .LST文件。用TYPE命令检查 .LST文件,观察宏替换命令产生的指令集。
将OBJ文件连接成EXE文件(假设为AA。EXE)。
用命令DEBUG AA.EXE XXX (XXX为任意字符串)将AA.EXE带参数调入DEBUG用D命令观察DS:0080处的命令行,记录80H处的内容和字符个数的关糸。
退出DEBUG。直接带参数运行此程序:
AA n(n=0--5)
程序代码
dispmacromsg
leadx,msg
movah,9
int21h
movah,4ch
int21h
endm
stacksegmentstack
db256 dup(0)
stackends
datasegment
parmdb16 dup(?)
brtabledwoffset bra,offset brb,offset brc
dwoffset brd,offset bre,offset brf
msgadb'I like my IBM-PC!$'
msgbdb'How are you!$'
msgcdb'Nibao College$'
msgddb'This is a sample$'
msgedb'Wellcome use my coputer!$'
msgfdb'Theassemder language of 8088$'
errmsdb'Error!! invalid parameter!!$'
dataends
codesegment
assumecs:code,ds:data,ss:stack
start:movax,data
moves,ax
movsi,80h
leadi,parm
movcx,16
cld
repmovsb
movds,ax
cmpparm,2
jcerr
moval,parm+2
subal,30h
jcerr
cmpal,6
jncerr
leabx,brtable
cbw
addax,ax
addbx,ax
jmp[bx]
err:disperrms
bra:dispmsga
brb:dispmsgb
brc:dispmsgc
brd:dispmsgd
bre:dispmsge
brf:dispmsgf
codeends
endstart
二、循环程序
程序步骤
输入,汇编并连接此程序。忽略连接时的无堆栈告警。
用EXE2BIN将 .exe文件转换为 。COM文件,命令格式:
EXE2BIN? ???.EXE ????.COM
在DEBUG下运行此程序,记录运行结果。
将转移指令JLE改为JBE,JGE和JAE,分别运行并记录排序结果。
2、程序代码:
codesegment
org100h
assumecs:code,ds:code
main:jmpstart
arraydw1234h,5673h,7fffh,8000h,0dffh
dw0ab5h,0369h,005fh,5634h,9069h
countequ$-array
start:movcx,count
shrcx,1
deccx
movbl,-1
again:movdx,cx
andbl,bl
jeexit
xorbl,bl
xorsi,si
again1:movax,array[si]
cmpax,array[si+2]
jlenchg
xchgarray[si+2],ax
movarray[si],ax
movbl,-1
nchg:incsi
incsi
decdx
jnzagain1
loopagain
exit:int20h
codeends
endmain
三、子程序