实验一:判断一个数X得正,负数,还就就是零。(假设就就是正数,输出+,就就是负数,输出-,就就是零,输出Thisisazore!)
DATASEGMENT
XDB10
CREQU0DH
LFEQU0AH
WDB'Thisisazore!,CR,LF,$
ZHENGDB+,CR,LF,$
FUDB-,CR,LF,$
DATAENDS
CODESEGMENT
ASSUMECS:CODE,DS:DATA
START:MOVAX,DATA
MOVDS,AX
MOVAL,X
ANDAL,AL
JZL1
SHLAL,1
JCL3
JMPL2
L1:MOVDX,OFFSETW
MOVAH,9
INT21H
JMPL4
L2:MOVDX,OFFSETZHENG
MOVAH,9
INT21H
JMPL4
L3:MOVDX,OFFSETFU
MOVAH,9
INT21H
JMPL4
L4:MOVAH,4CH
INT21H
CODEENDS
ENDSTART
实验二:求十个数中得最小数,并以十进制输出。(若要求最大得,只要把JC改为JNC即可)(仅局限于0---16间得数比较,因为ADDAL,30H只就就是针对一位得十六进制转换十进制得算法)
DATASEGMENT
XDATDB0AH,1FH,02H,03H,04H,05H,06H,07H,08H,09H
MINDB?
CREQU0DH
LFEQU0AH
WDBismin,CR,LF,$'
DATAENDS
CODESEGMENT
ASSUMECS:CODE,DS:DATA
START:MOVAX,DATA
MOVDS,AX
MOVCX,9
MOVSI,OFFSETXDAT
MOVAL,[SI]
L2:CMPAL,[SI+1]
JCL1
MOVAL,[SI+1]
L1:INCSI
LOOPL2
ADDAL,30H
MOVDL,AL
MOVAH,2
INT21H
MOVDX,OFFSETW
MOVAH,9
INT21H
CODEENDS
ENDSTART
实验三:设有3个单字节无符号数存放在BUF开始得缓冲区中,编写一个能将她们从大到小从新排列得程序。
DATASEGMENT
BUFDB87,234,123
DATAENDS
CODESEGMENT
ASSUMECS:CODE,DS:DATA
START:MOVAX,DATA
MOVDS,AX
MOVSI,OFFSETBUF
MOVAL,[SI];把3个数取到寄存器中
MOVBL,[SI+1]
MOVCL,[SI+2]
CMPAL,BL;排序,将最大数送AL寄存器
JAENEXT1
XCHGAL,BL
NEXT1:CMPAL,CL
JAENEXT2
XCHGAL,CL
NEXT2:CMPBL,CL;将最小输送CL寄存器
JAENEXT3
XCHGBL,CL
NEXT3:MOV[SI],AL;从大到小依次存回缓冲区,AL,BL,CL
MOV[SI+1],BL
MOV[SI+2],CL
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
实验三(2):设某一数组得长度为N,个元素均为字数据,试编制一个程序使该数组中得数据按照从小到大得次序排列。(要从大到小排序,只需把JBE改为JAE即可)
ADATASEGMENT
NEQU10
DATADW87,54,78,45,35,23,04H,12H,03H,21H
ADATAENDS
ACODESEGMENT
ASSUMECS:ACODE,DS:ADATA
START:MOVAX,ADATA
MOVDS,AX
MOVDS,AX
MOVBX,0
MOVCX,N
DECCX