ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:23.34KB ,
资源ID:7950826      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7950826.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第五章离散数学.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

第五章离散数学.docx

1、第五章离散数学1.从屏幕上输入小写字母,转化为大写字母输出(解法1) DATA SEGMENT MESSAGE DB ENTER A STRING:,0AH,0DH,$ MAXLENGTH DB 50,?,50 DUP(?) ;每次最多可以输入49个字符DATA ENDSCODE SEGMENT ASSUME DS:DATA,CS:CODESTART: MOV AX,DATA MOV DS,AX LEA DX,MESSAGE ;输出ENTER A STRING MOV AH,09H INT 21H LEA DX,MAXLENGTH ;输入字符串 MOV AH,0AH ;键盘输入到缓冲区,DS:

2、DX=缓冲区首址 INT 21H ;(DS:DX)=缓冲区最大字符数,(DS:DX+1)=实际输入的字符数 MOV AH,02H ;输出回车换行 MOV DL,0AH INT 21H MOV AH,02H MOV DL,0DH INT 21H MOV CL,MAXLENGTH+1;把字符的实际长度放入寄存器CL MOV CH,0 MOV BH,02H LEA SI,MAXLENGTH+2;取字符串的基地址放入SIXUN: MOV AL,SI CMP AL,Z JBE S1 ;小于等于Z转移 JMP S3 S1:CMP AL,A JAE DA ;大于等于A转移 JMP OUTPUTDA:ADD

3、AL,20H JMP OUTPUTS3:CMP AL,z ;小于等于小Z转移 JBE S4S4:CMP AL,a ;大于等于小a转移 JAE XIAO JMP OUTPUTXIAO: SUB AL,32 JMP OUTPUTOUTPUT: MOV DL,AL MOV AH,02H ;显示输出 INT 21H INC SILOOP XUN MOV AH,4CH INT 21HCODE ENDS END START(解法2);将输入的小写字母转化为大写字母输出,输入回车结束CODE SEGMENT ASSUME CS:CODEBEGIN: MOV AH,01H INT 21HCMP AL,0DH

4、;ASCII OF CARRIAGE RETURNJE EXIT CMP AL,61H ;ASCII OF a JB STOP CMP AL,7AH ;ASCII OF z JA STOPSUB AL,20HSTOP: MOV DL,AL MOV AH,2 INT 21H JMP BEGINEXIT: MOV AH,4CHINT 21H RETCODE ENDS END BEGIN2.输入一个字符,找出它的前导字符和后续字符,并按顺序显示这三个字符. (解法1)CODE SEGMENTMAIN PROC FARASSUME CS:CODESTART:PUSH DSXOR AX,AXPUSH A

5、XMOV AH,01HINT 21HCMP AL,61HJB EXITCMP AL,7AHJA EXITMOV CL,ALDEC ALMOV DL,ALMOV AH,02HINT 21HMOV DL,CLMOV AH,02HINT 21HAND AL,01HINC CLMOV DL,CLMOV AH,02HINT 21HEXIT:MOV AX,4C00HINT 21HRETMAIN ENDPCODE ENDSEND START(解法2).MODEL SMALL.STACK 200H.DATAimsg db Input:$ ;输入提示信息 omsg db 0Dh,0Ah,Output:$ ;输出

6、提示信息 string db 3 dup(0),$ ;存放三个字符 .CODE START: mov ax,data mov ds,ax lea dx,imsg mov ah,9 int 21h mov ah,1 int 21h lea di,string dec al mov cx,3 s: mov di,al inc di inc al loop s lea dx,omsg mov ah,9 int 21hlea dx,string mov ah,9 int 21h MOV AH,07HINT 21HMOV AX,4C00HINT 21HEND START3.将AX寄存器中的16位数分成4

7、组,每组4位,然后把这四组数分别放在AL,BL,CL,DL中.MODEL SMALL,C.CODE.STARTUPMOV AX,3456HMOV BX,AXMOV CL,4ROL AX,CLMOV BX,AXAND AL,0FH ;AL中是15,14,13,12ROL BX,CLMOV DX,BXAND BL,0FH ;BL中是11,10,9,8AND AH,0FHMOV CH,AH ;CH中是7,6,5,4MOV CL,CHAND DH,0FH ;DH中是3,2,1,0MOV DL,DH.EXIT 0END4.试编写一程序,要求比较两个字符串STRING1和STRING2所含字符是否相同,若

8、相同则显示MATCH,若不相同则显示NOT MATCH.MODEL SMALL.DATASTRING1 DB LDSKFJSLDKFLENG1 EQU $-STRING1STRING2 DB LDSKFJSLDKPLENG2 EQU $-STRING2MSG1 DB MATCH,24HMSG2 DB NOT MATCH,24H.CODEMOV AX,DATAMOV DS,AXMOV ES,AXMOV BX,LENG1MOV CX,LENG2CMP BX,CXJNZ NOT_MATCHLEA SI,STRING1LEA DI,STRING2CLDREPZ CMPSBJZ _MATCHNOT_MA

9、TCH:LEA DX,MSG2MOV AH,09HINT 21HJMP _EXIT_MATCH:LEA DX,MSG1MOV AH,09HINT 21H_EXIT:MOV AH,07HINT 21HMOV AX,4C00HINT 21HEND5.要求能从键盘接收一个个位数,然后响铃N次(响铃的ASCII码为07).MODEL SMALL.DATAMSG DB YOUR INPUT IS NOT 1-9!,24H.CODE.STARTUPMOV AH,0INT 16H ;接收一个键盘输入CMP AL,31HJB ERRORCMP AL,39HJA ERRORMOV CL,ALSUB CL,30H

10、CYCLE:MOV DL,7MOV AH,09HINT 21HMOV AH,07H ;按一下键就响一下铃声INT 21HLOOP CYCLEJMP _EXITERROR:LEA DX,MSGMOV AH,09HINT 21HMOV AH,07HINT 21H_EXIT:.EXIT 0END6.编写程序,将一个包含有20个数据的数组M分成两个数组,正数数组P和负数数组N,并分别把这两个数组中数据的个数显示出来.MODEL SMALL,C.DATAINDEX DB 12,-20,4,05H,11H,2AH,-11,2,3,09H DB -3,0,-9,44H,32H,33H,34H,-5,40H,

11、22HP DB 0,20 DUP(0) ;存放正数N DB 0,20 DUP(0) ;存放负数.CODEDISPLAY PROC NEAR USES AXAND AH,0FH.IF AH= 0AH & AH= 0FHADD AH,07H.ENDIFADD AH,30HMOV DL,AHMOV AH,02HINT 21HMOV AH,07HINT 21HRETDISPLAY ENDP.STARTUPLEA DI,P+1LEA SI,N+1LEA BX,INDEXMOV CX,14HCYCLE:CMP BYTE PTR BX,0JG NOSIGNINC AL ;AL中存放负数MOV DL,BYTE

12、 PTR BXMOV BYTE PTR DS:DI,DLINC DIINC BXLOOP CYCLENOSIGN:INC AH ;AH中存放正数MOV DL,BYTE PTR BXMOV BYTE PTR DS:SI,DLINC SIINC BXLOOP CYCLEMOV P,AHMOV N,ALCALL DISPLAYMOV AH,ALCALL DISPLAY.EXIT 0END7.试编制一个汇编语言程序,求出首地址为DATA的100D字数组中的最小偶数,并把它存放在AX中.datarea segmentdata dw 10,2,4,8,7,7,69,65,55,89,95 dw 25,39

13、,77,88,25,1,47,88,8,8,77,88,22count=($-data)/2num dw 0ffeehdatarea endscode segmentmain proc farassume cs:code,ds:datareapush dsmov ax,0push axbegin:mov ax,datareamov ds,axmov bl,2mov cx,countlea si,dataA:mov ax,simov dx,axdiv blcmp ah,0jne circlecmp dx,numjb Bcircle:add si,2lopa:loop Aexit:mov ax,n

14、umretB:mov num,dxjmp lopamain endpcode endsend8.把AX中存放的16位二进制数K看作是8个二进制的四分之一字节.试编写一程序,要求数一下值为3(即11B)的四分之一字节数,并将该数在终端上显示出来.MOV CX,8 MOV DL,0 NEXT3: ROR AX,1 JNC NEXT1 ROR AX,1 JNC NEXT2 INC DL NEXT2: LOOP NEXT3 ADD DL, 30H MOV AH, 2 INT 21H MOV AH, 4CH INT 21H NEXT1: ROR AX, 1 JMP NEXT29.试编写一汇编语言程序,求

15、出首地址为DATA的100D字数组中的最小偶数,并把它存放在AX中.MODEL SMALL,C.DATA_DATA DW 100 DUP(?).CODE.STARTUPLEA SI,_DATAMOV AX,SIMOV CX,100CYCLE:ADD SI,2.IF AX SI MOV AX,SI.ENDIFLOOP CYCLE.EXIT 010.设有一段英文,其字符变量名为ENG,并以$字符结束,试编写一程序,查对单词SUN在该文中的出现次数,并以格式SUN*显示出次数.MODEL SMALL .386 .DATA ENG DB SUN,SUN JAVA,24HMESSAGE DB SUN:,

16、$ .STACK 100H .CODE MAIN PROC FAR START: PUSH DS AND AX,0 PUSH AXMOV AX,DATA MOV DS,AX MOV AX,0H MOV SI,1H SUBSI1: SUB SI,1H SUBSI2: SUB SI,1H COMPARES: ADD SI,1H MOV DL,ENGSI CMP DL,24H JE PRINT CMP DL,53H JNE COMPARES COMPAREU: ADD SI,1H MOV DL,ENGSI CMP DL,55H JNE SUBSI2 COMPAREN: ADD SI,1H MOV D

17、L,ENGSI CMP DL,4EH JNE SUBSI1 INC AX JMP COMPARES PRINT: LEA DX,MESSAGE PUSH AX MOV AH,09H INT 21H POP AX CALL SHOWNUMBER EXIT: RET MAIN ENDP SHOWNUMBER PROC NEAR COVERNUM: DAA MOV DX,AX MOV CL,4H SHOW: ROL DX,4H PUSH DX AND DX,0FH ADD DX,30H MOV AH,02H INT 21H POP DX LOOP SHOW RET SHOWNUMBER ENDP E

18、ND START11.从键盘输入一系列以$为结束符的字符串,然后对其中的非数字字符计数,并显示出计数结果.MODEL SMALL .386 .CODE MAIN PROC FAR START: PUSH DS MOV AX,0 PUSH AXMOV CX,0 INPUT: MOV AH,1H INT 21H COMPARE: CMP AL,24H JE PRINT CMP AL,30H JL ADDCOUNT CMP AL,39H JG ADDCOUNT ADDCOUNT: ADD AX,1H JMP INPUT PRINT: CALL SHOWNUMBER EXIT: RET MAIN EN

19、DP SHOWNUMBER PROC NEAR COVERNUM: DAA MOV DX,AX MOV CL,2H SHOW: ROL DL,4H PUSH DX AND DL,0FH ADD DL,30H MOV AH,02H INT 21H POP DX LOOP SHOW RET SHOWNUMBER ENDP END START12.有一个首地址为MEM的100D字数组,试编制程序删除数组中所有为零的项,并将后续项向前压缩,最后将数组的剩余部分补上零.model small .386 .stack 100H .data mem dw12,0,0,0,0,0,1,2,3,6,4,7,8,

20、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 MAIN PROC FAR start: push ds and ax,0 push axmov ax,data mov ds,ax mov ax,0H mov bx,64H mov cx,64H mov si,0FFFEH

21、 repeat: ADD si,2H cmp MEMsi,0H JE calls loop repeat calls: INC ax call sort cmp ax,1H JE lastValue DEC cx jmp repeat exit : ret lastValue: mov membx,0H DEC cx jmp repeatMAIN ENDPsort PROC NEAR push cx push si sub si,2H s: add si,2H mov dx,memsi mov memsi+2,dx loop s return: pop si pop cx ret sort E

22、NDP END start13.在STRING到STRING+99单元中存放着一个字符串,试编制一程序测试该字符串中是否存在数字.如有,则把CL的第5位置1,否则将该位置0.DSEG SEGMENTA DW ?B DW ?DSEG ENDSCSEG SEGMENTMAIN PROC FARASSUME CS:CSEG,DS:DSEGSTART:PUSH DSSUB AX, AXPUSH AXMOV AX, DSEGMOV DS, AXBEGIN: MOV AX, AMOV AX, BXOR AX, BXTEST AX, 0001JZ EXITXCHG BX, AMOV B, BXJMP EXI

23、TCLASS: TEST BX, 0001JZ EXITINC BINC AEXIT:RETMAIN ENDPCSEG ENDSEND START14.在首地址为TABLE的数组中按递增次序存放着100H个16位补码数,试编写一个程序把出现次数最多的数及其出现次数分别存放在AX和CX中.DATA SEGMENTTABLE DW 100H DUP (?) MDATA DW ? ; 存放出现次数最多的数 COUNT DW 0 ; 存放出现次数 DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV BX, 1

24、00H MOV DI, 0 ; DI为数组TABLE的指针 NEXT: MOV DX, 0 MOV SI, 0 MOV AX, TABLEDI MOV CX, 100H COMP: CMP TABLESI, AX JNE _ADDR INC DX _ADDR: ADD SI, 2 LOOP COMP CMP DX, COUNT JLE CHANG MOV COUNT, DX MOV MDATA, AX CHANG: ADD DI, 2 DEC BX JNZ NEXT MOV CX, COUNT MOV AX, MDATA MOV AX,4C00HINT 21HCODE ENDSEND STAR

25、T15.数据段中已定义了一个有n个字数据的数组M,试编写一程序求出M中绝对值最大的数,把它放在数据段的M+2n单元中,并将该数的偏移地址存放在M+2(n+1)单元中.DSEG SEGMENTX DW -4FX DW ?DSEG ENDSCSEG SEGMENTMAIN PROC FARASSUME CS:CSEG,DS:DSEGSTART:PUSH DSSUB AX, AXPUSH AXMOV AX, DSEGMOV DS, AXBEGIN: CMP X, 5JG A0CMP X, -5JL A0MOV BX,1SUB BX, XMOV FX, BXRETA0:MOV FX, 0RETMAIN

26、 ENDPCSEG ENDSEND START16.在首地址为DATA的字数组中,存放了100H个16位补码数,试编写一程序,求出它们的平均值放在AX寄存器中;并求出数组中有多少个数小于此平均值,将结果放在BX寄存器中.MODEL SMALL.STACK 200H.DATADA_TA DW 100H DUP(?) .CODE.STARTUPXOR AX,AXXOR BX,BXXOR DX,DXMOV CX,100HLEA SI,DA_TACYCLE:ADD AX,SIADC DX,0INC SIINC SIDEC CXCMP CX,0JNZ CYCLEMOV CX,100HDIV CX ;计算

27、平均值,存放在AX中.LEA SI,DA_TACOMPARE:CMP AX,SIJA NEXT ;计算小于AX的值,其个数存放在BX中INC BXNEXT:INC SIINC SIDEC CXCMP CX,0JNZ COMPARE.EXIT 0END17.试编制一个程序,把AX中的16进制数转化为ASCII码,并将对应的ASCII码依次存放到MEM数组中的四个字节中.例如:当(AX)=2A49H时,程序执行完后,MEM中的4个字节内容为39H,34H,41H,32H.;MODE=DOSDATA SEGMENTSOURCE DW 2A49HMEM DB 4 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AX MOV DX,SOURCELEA BX,MEMMOV CX,4LB:MOV AX,DXAND AX,000FHCMP AL,10JC ADADD AL

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1