第五章离散数学.docx
- 文档编号:7950826
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:22
- 大小:23.34KB
第五章离散数学.docx
《第五章离散数学.docx》由会员分享,可在线阅读,更多相关《第五章离散数学.docx(22页珍藏版)》请在冰豆网上搜索。
第五章离散数学
1.从屏幕上输入小写字母,转化为大写字母输出
(解法1)
DATASEGMENT
MESSAGE DB"ENTERASTRING:
",0AH,0DH,'$'
MAXLENGTHDB50,?
50DUP(?
);每次最多可以输入49个字符
DATAENDS
CODESEGMENT
ASSUMEDS:
DATA,CS:
CODE
START:
MOVAX,DATA
MOVDS,AX
LEADX,MESSAGE;输出ENTERASTRING
MOVAH,09H
INT21H
LEADX,MAXLENGTH;输入字符串
MOVAH,0AH ;键盘输入到缓冲区,DS:
DX=缓冲区首址
INT21H ;(DS:
DX)=缓冲区最大字符数,(DS:
DX+1)=实际输入的字符数
MOVAH,02H ;输出回车换行
MOVDL,0AH
INT21H
MOVAH,02H
MOVDL,0DH
INT21H
MOVCL,MAXLENGTH+1;把字符的实际长度放入寄存器CL
MOVCH,0
MOVBH,02H
LEASI,MAXLENGTH+2;取字符串的基地址放入SI
XUN:
MOVAL,[SI]
CMPAL,'Z'
JBES1 ;小于等于'Z'转移
JMPS3
S1:
CMPAL,'A'
JAEDA ;大于等于'A'转移
JMPOUTPUT
DA:
ADDAL,20H
JMPOUTPUT
S3:
CMPAL,'z';小于等于小Z转移
JBES4
S4:
CMPAL,'a';大于等于小a转移
JAEXIAO
JMPOUTPUT
XIAO:
SUBAL,32
JMPOUTPUT
OUTPUT:
MOVDL,AL
MOVAH,02H;显示输出
INT21H
INCSI
LOOPXUN
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
(解法2)
;将输入的小写字母转化为大写字母输出,输入回车结束
CODESEGMENT
ASSUMECS:
CODE
BEGIN:
MOVAH,01H
INT21H
CMPAL,0DH;ASCIIOFCARRIAGERETURN
JEEXIT
CMPAL,61H;ASCIIOF'a'
JBSTOP
CMPAL,7AH;ASCIIOF'z'
JASTOP
SUBAL,20H
STOP:
MOVDL,AL
MOVAH,2
INT21H
JMPBEGIN
EXIT:
MOVAH,4CH
INT21H
RET
CODEENDS
ENDBEGIN
2.输入一个字符,找出它的前导字符和后续字符,并按顺序显示这三个字符.
(解法1)
CODESEGMENT
MAINPROCFAR
ASSUMECS:
CODE
START:
PUSHDS
XORAX,AX
PUSHAX
MOVAH,01H
INT21H
CMPAL,61H
JBEXIT
CMPAL,7AH
JAEXIT
MOVCL,AL
DECAL
MOVDL,AL
MOVAH,02H
INT21H
MOVDL,CL
MOVAH,02H
INT21H
ANDAL,01H
INCCL
MOVDL,CL
MOVAH,02H
INT21H
EXIT:
MOVAX,4C00H
INT21H
RET
MAINENDP
CODEENDS
ENDSTART
(解法2)
.MODELSMALL
.STACK200H
.DATA
imsgdb'Input:
$';输入提示信息
omsgdb0Dh,0Ah,'Output:
$';输出提示信息
stringdb3dup(0),'$';存放三个字符
.CODE
START:
movax,@data
movds,ax
leadx,imsg
movah,9
int21h
movah,1
int21h
leadi,string
decal
movcx,3
s:
mov[di],al
incdi
incal
loops
leadx,omsg
movah,9
int21h
leadx,string
movah,9
int21h
MOVAH,07H
INT21H
MOVAX,4C00H
INT21H
ENDSTART
3.将AX寄存器中的16位数分成4组,每组4位,然后把这四组数分别放在AL,BL,CL,DL中
.MODELSMALL,C
.CODE
.STARTUP
MOVAX,3456H
MOVBX,AX
MOVCL,4
ROLAX,CL
MOVBX,AX
ANDAL,0FH;AL中是15,14,13,12
ROLBX,CL
MOVDX,BX
ANDBL,0FH;BL中是11,10,9,8
ANDAH,0FH
MOVCH,AH;CH中是7,6,5,4
MOVCL,CH
ANDDH,0FH;DH中是3,2,1,0
MOVDL,DH
.EXIT0
END
4.试编写一程序,要求比较两个字符串STRING1和STRING2所含字符是否相同,若相同则显示'MATCH',若不相同则显
示'NOTMATCH'.
.MODELSMALL
.DATA
STRING1DB"LDSKFJSLDKF"
LENG1EQU$-STRING1
STRING2DB"LDSKFJSLDKP"
LENG2EQU$-STRING2
MSG1DB"MATCH",24H
MSG2DB"NOTMATCH",24H
.CODE
MOVAX,@DATA
MOVDS,AX
MOVES,AX
MOVBX,LENG1
MOVCX,LENG2
CMPBX,CX
JNZNOT_MATCH
LEASI,STRING1
LEADI,STRING2
CLD
REPZCMPSB
JZ_MATCH
NOT_MATCH:
LEADX,MSG2
MOVAH,09H
INT21H
JMP_EXIT
_MATCH:
LEADX,MSG1
MOVAH,09H
INT21H
_EXIT:
MOVAH,07H
INT21H
MOVAX,4C00H
INT21H
END
5.要求能从键盘接收一个个位数,然后响铃N次(响铃的ASCII码为07)
.MODELSMALL
.DATA
MSGDB"YOURINPUTISNOT1-9!
",24H
.CODE
.STARTUP
MOVAH,0
INT16H;接收一个键盘输入
CMPAL,31H
JBERROR
CMPAL,39H
JAERROR
MOVCL,AL
SUBCL,30H
CYCLE:
MOVDL,7
MOVAH,09H
INT21H
MOVAH,07H;按一下键就响一下铃声
INT21H
LOOPCYCLE
JMP_EXIT
ERROR:
LEADX,MSG
MOVAH,09H
INT21H
MOVAH,07H
INT21H
_EXIT:
.EXIT0
END
6.编写程序,将一个包含有20个数据的数组M分成两个数组,正数数组P和负数数组N,并分别把这两个数组中数据的
个数显示出来.
.MODELSMALL,C
.DATA
INDEXDB12,-20,4,05H,11H,2AH,-11,2,3,09H
DB-3,0,-9,44H,32H,33H,34H,-5,40H,22H
PDB0,20DUP(0);存放正数
NDB0,20DUP(0);存放负数
.CODE
DISPLAYPROCNEARUSESAX
ANDAH,0FH
.IFAH>=0AH&&AH<=0FH
ADDAH,07H
.ENDIF
ADDAH,30H
MOVDL,AH
MOVAH,02H
INT21H
MOVAH,07H
INT21H
RET
DISPLAYENDP
.STARTUP
LEADI,P+1
LEASI,N+1
LEABX,INDEX
MOVCX,14H
CYCLE:
CMPBYTEPTR[BX],0
JGNOSIGN
INCAL;AL中存放负数
MOVDL,BYTEPTR[BX]
MOVBYTEPTRDS:
[DI],DL
INCDI
INCBX
LOOPCYCLE
NOSIGN:
INCAH;AH中存放正数
MOVDL,BYTEPTR[BX]
MOVBYTEPTRDS:
[SI],DL
INCSI
INCBX
LOOPCYCLE
MOVP,AH
MOVN,AL
CALLDISPLAY
MOVAH,AL
CALLDISPLAY
.EXIT0
END
7.试编制一个汇编语言程序,求出首地址为DATA的100D字数组中的最小偶数,并把它存放在AX中.
datareasegment
datadw10,2,4,8,7,7,69,65,55,89,95
dw25,39,77,88,25,1,47,88,8,8,77,88,22
count=($-data)/2
numdw0ffeeh
datareaends
codesegment
mainprocfar
assumecs:
code,ds:
datarea
pushds
movax,0
pushax
begin:
movax,datarea
movds,ax
movbl,2
movcx,count
leasi,data
A:
movax,[si]
movdx,ax
divbl
cmpah,0
jnecircle
cmpdx,num
jbB
circle:
addsi,2
lopa:
loopA
exit:
movax,num
ret
B:
movnum,dx
jmplopa
mainendp
codeends
end
8.把AX中存放的16位二进制数K看作是8个二进制的"四分之一字节".试编写一程序,要求数一下值为3(即11B)的四
分之一字节数,并将该数在终端上显示出来.
MOVCX,8
MOVDL,0
NEXT3:
RORAX,1
JNCNEXT1
RORAX,1
JNCNEXT2
INCDL
NEXT2:
LOOPNEXT3
ADDDL,30H
MOVAH,2
INT21H
MOVAH,4CH
INT21H
NEXT1:
RORAX,1
JMPNEXT2
9.试编写一汇编语言程序,求出首地址为DATA的100D字数组中的最小偶数,并把它存放在AX中.
.MODELSMALL,C
.DATA
_DATADW100DUP(?
)
.CODE
.STARTUP
LEASI,_DATA
MOVAX,[SI]
MOVCX,100
CYCLE:
ADDSI,2
.IFAX<[SI]
MOVAX,[SI]
.ENDIF
LOOPCYCLE
.EXIT0
10.设有一段英文,其字符变量名为ENG,并以$字符结束,试编写一程序,查对单词SUN在该文中的出现次数,并以格式
"SUN****"显示出次数.
.MODELSMALL
.386
.DATA
ENGDB'SUN','SUNJAVA',24H
MESSAGEDB'SUN:
','$'
.STACK100H
.CODE
MAINPROCFAR
START:
PUSHDS
ANDAX,0
PUSHAX
MOVAX,@DATA
MOVDS,AX
MOVAX,0H
MOVSI,1H
SUBSI1:
SUBSI,1H
SUBSI2:
SUBSI,1H
COMPARES:
ADDSI,1H
MOVDL,ENG[SI]
CMPDL,24H
JEPRINT
CMPDL,53H
JNECOMPARES
COMPAREU:
ADDSI,1H
MOVDL,ENG[SI]
CMPDL,55H
JNESUBSI2
COMPAREN:
ADDSI,1H
MOVDL,ENG[SI]
CMPDL,4EH
JNESUBSI1
INCAX
JMPCOMPARES
PRINT:
LEADX,MESSAGE
PUSHAX
MOVAH,09H
INT21H
POPAX
CALLSHOWNUMBER
EXIT:
RET
MAINENDP
SHOWNUMBERPROCNEAR
COVERNUM:
DAA
MOVDX,AX
MOVCL,4H
SHOW:
ROLDX,4H
PUSHDX
ANDDX,0FH
ADDDX,30H
MOVAH,02H
INT21H
POPDX
LOOPSHOW
RET
SHOWNUMBERENDP
ENDSTART
11.从键盘输入一系列以$为结束符的字符串,然后对其中的非数字字符计数,并显示出计数结果.
.MODELSMALL
.386
.CODE
MAINPROCFAR
START:
PUSHDS
MOVAX,0
PUSHAX
MOVCX,0
INPUT:
MOVAH,1H
INT21H
COMPARE:
CMPAL,24H
JEPRINT
CMPAL,30H
JLADDCOUNT
CMPAL,39H
JGADDCOUNT
ADDCOUNT:
ADDAX,1H
JMPINPUT
PRINT:
CALLSHOWNUMBER
EXIT:
RET
MAINENDP
SHOWNUMBERPROCNEAR
COVERNUM:
DAA
MOVDX,AX
MOVCL,2H
SHOW:
ROLDL,4H
PUSHDX
ANDDL,0FH
ADDDL,30H
MOVAH,02H
INT21H
POPDX
LOOPSHOW
RET
SHOWNUMBERENDP
ENDSTART
12.有一个首地址为MEM的100D字数组,试编制程序删除数组中所有为零的项,并将后续项向前压缩,最后将数组的剩
余部分补上零.
.modelsmall
.386
.stack100H
.data
memdw
12,0,0,0,0,0,1,2,3,6,4,7,8,2,1,0,0,54,5,0,2,4,7,8,0,5,6,2,1,4,8,5,1,45,7,5,1,2,0,2,4,0,2,54,0,12,0,
0,0,0,0,1,2,3,6,4,7,8,2,1,0,0,54,5,0,2,4,7,8,0,5,6,2,1,4,8,5,1,45,7,5,1,2,0,2,4,0,2,54,0,45,7,5,1,2
0,2,4,0,2
.code
MAINPROCFAR
start:
pushds
andax,0
pushax
movax,@data
movds,ax
movax,0H
movbx,64H
movcx,64H
movsi,0FFFEH
repeat:
ADDsi,2H
cmpMEM[si],0H
JEcalls
looprepeat
calls:
INCax
callsort
cmpax,1H
JElastValue
DECcx
jmprepeat
exit:
ret
lastValue:
movmem[bx],0H
DECcx
jmprepeat
MAINENDP
sortPROCNEAR
pushcx
pushsi
subsi,2H
s:
addsi,2H
movdx,mem[si]
movmem[si+2],dx
loops
return:
popsi
popcx
ret
sortENDP
ENDstart
13.在STRING到STRING+99单元中存放着一个字符串,试编制一程序测试该字符串中是否存在数字.如有,则把CL的第
5位置1,否则将该位置0.
DSEGSEGMENT
ADW?
BDW?
DSEGENDS
CSEGSEGMENT
MAINPROCFAR
ASSUMECS:
CSEG,DS:
DSEG
START:
PUSHDS
SUBAX,AX
PUSHAX
MOVAX,DSEG
MOVDS,AX
BEGIN:
MOVAX,A
MOVAX,B
XORAX,BX
TESTAX,0001
JZEXIT
XCHGBX,A
MOVB,BX
JMPEXIT
CLASS:
TESTBX,0001
JZEXIT
INCB
INCA
EXIT:
RET
MAINENDP
CSEGENDS
ENDSTART
14.在首地址为TABLE的数组中按递增次序存放着100H个16位补码数,试编写一个程序把出现次数最多的数及其出现
次数分别存放在AX和CX中.
DATASEGMENT
TABLEDW100HDUP(?
)
MDATADW?
;存放出现次数最多的数
COUNTDW0;存放出现次数
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVBX,100H
MOVDI,0;DI为数组TABLE的指针
NEXT:
MOVDX,0
MOVSI,0
MOVAX,TABLE[DI]
MOVCX,100H
COMP:
CMPTABLE[SI],AX
JNE_ADDR
INCDX
_ADDR:
ADDSI,2
LOOPCOMP
CMPDX,COUNT
JLECHANG
MOVCOUNT,DX
MOVMDATA,AX
CHANG:
ADDDI,2
DECBX
JNZNEXT
MOVCX,COUNT
MOVAX,MDATA
MOVAX,4C00H
INT21H
CODEENDS
ENDSTART
15.数据段中已定义了一个有n个字数据的数组M,试编写一程序求出M中绝对值最大的数,把它放在数据段的M+2n单
元中,并将该数的偏移地址存放在M+2(n+1)单元中.
DSEGSEGMENT
XDW-4
FXDW?
DSEGENDS
CSEGSEGMENT
MAINPROCFAR
ASSUMECS:
CSEG,DS:
DSEG
START:
PUSHDS
SUBAX,AX
PUSHAX
MOVAX,DSEG
MOVDS,AX
BEGIN:
CMP X,5
JGA0
CMPX,-5
JLA0
MOVBX,1
SUBBX,X
MOVFX,BX
RET
A0:
MOVFX,0
RET
MAINENDP
CSEGENDS
ENDSTART
16.在首地址为DATA的字数组中,存放了100H个16位补码数,试编写一程序,求出它们的平均值放在AX寄存器中;并求
出数组中有多少个数小于此平均值,将结果放在BX寄存器中.
.MODELSMALL
.STACK200H
.DATA
DA_TADW100HDUP(?
)
.CODE
.STARTUP
XORAX,AX
XORBX,BX
XORDX,DX
MOVCX,100H
LEASI,DA_TA
CYCLE:
ADDAX,[SI]
ADCDX,0
INCSI
INCSI
DECCX
CMPCX,0
JNZCYCLE
MOVCX,100H
DIVCX;计算平均值,存放在AX中.
LEASI,DA_TA
COMPARE:
CMPAX,[SI]
JANEXT;计算小于AX的值,其个数存放在BX中
INCBX
NEXT:
INCSI
INCSI
DECCX
CMPCX,0
JNZCOMPARE
.EXIT0
END
17.试编制一个程序,把AX中的16进制数转化为ASCII码,并将对应的ASCII码依次存放到MEM数组中的四个字节中.例
如:
当(AX)=2A49H时,程序执行完后,MEM中的4个字节内容为39H,34H,41H,32H.
;MODE=DOS
DATA SEGMENT
SOURCEDW 2A49H
MEM DB4DUP(?
)
DATA ENDS
CODE SEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOV AX,DATA
MOV DS,AX
MOV DX,SOURCE
LEA BX,MEM
MOV CX,4
LB:
MOV AX,DX
AND AX,000FH
CMP AL,10
JC AD
ADD AL
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第五 离散数学