一、实验内容1•在屏幕上显示一个字符的源程序:DATASSEGMENTSTRINGS 'HELLO!;'$'ORG 100HDATASENDSC0DES5EGMENTASSUMECS:CODES,DS:DATASSTARTMOV AX,DATASMOV DS,AX LEADX,STRINGMOV AH,09HINT 21HMOV AH,4CHINT 21HCODESENDSENDSTART01DATfiS SEGMENT62STRING DB * HELLO!' /S'03ORG 1O0H仙DATAS ENDSCODES SEGMENTQ6ASSUME CS:CODES.DS:DATAS07START:朋MOU AK.DATAS09MOU DS,AX10LEA DX, STR ING11MOV AH,@9H12INT 21H13MOU AH,UCH1U I NT 21H15 16CODES ENDSEND STfiUTH DOSBox 074, Cpu speed:HELLU!Pre&s araj Jccy to contilKic2.编写一个程序,实现字符串的复制功能,并且将复制的字符串显示出来DATASSEGMENTSTRING_ADB 'ICH LIEBE DIC障COUNTEQU&OFFSEETRING—ADATASENDSSTACK S EGMENTSTRING_BDB COUNTDUP(?)STACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATASMOV DS,AXMOV AX,STACKSMOV ES,AXLEASI,STRING_ALEADI,STRING_BMOV CX,COUNTSTDREP MOVSBLEADX,STRING_BMOV AH,9INT 21HMOV AH,4CHINT 21HMOV AH,4CHINT 21HCODESENDSENDSTART01 02 03 的 ti5 加 07 08 09 10 DATAS SEGMENT string_a db 1 ICH LIEBE DICH ・*■$ count equ $-offset string_a DATA? ENDS STACKS SEGMENT string b db count dup(?) STfiCKs"EMI>S CODES SEGMENT ASSUME CSzCODESxDSzDnTAS.SSzSTACKS START : 13 MOV AK r DATAS 仙 M(JU 15 MOU AK,STACKS 16MOU 17 LEA SI ,string_a 18 LEfi Di f stringlb 19 nou CX^count 20 STD 21 FICP MOUSB 12 r Cpu speec 3、利用中断调用,在屏幕上显示 1—9之间随机数。
中断号86H DATASSEGMENT CLADB 13,10,'WE ARE GOING TO PRODUCE A NUMBER AT RANDOM:$:' INFONDB 0DH,0AH ;THE PROGRAM RUNS GOOD$' DATASENDS STACK S EGMENTSTACK DB200 DUR0) STACKSENDS CODES5EGMENT ASSUMEDS:DATAS,SS:STACKS,CS:CODES START MOV AX,DATAS MOV DS,AX LEADX,CLA MOV AH,9 INT 21H MOV AX,0 MOV ES,AX MOV BX,86H*4 CLIMOV WORD PTR ES:[BJX]FFSE _RANMOV WORD PTR ES:[BX+S2]E, GRANSTIINT 86HMOV AH,02HINT 21HLEADX,INFONMOV AH,9INT 21HMOV AX,4C00HINT 21HRAN PROCPUSHCXPUSHDXMOV AH,0INT 1AHMOV AX,DXXORDX,DXMOV BX,10DIV BXADD DL,30HMOV AH,02HINT 21HPOPDXPOPCXIRETRAN ENDPCODESENDSENDSTARTNOI T AlTflU6IHTU7MOU48KOR49MOV BK.10se DIV BX51ADD DL,30H52HOU AH,02H53IHT21HSh FOP DX55POP CX56I RET57I^DOSBox 0+74r Cpu speed:.5859區RRE ^OKHG;TO FROHJCZ R NUrBEH flT Bail DOM 60RAN ENDP IHE FROGHAM BUNS GDDD61CODES ENDS Press 也瞇I key to c<Mitinue_62闘END START4. 复制字符串,并倒序输出DATASBEGMENTSTRING_QB 'still here',13,10,'$' STRING_DB'$' DATASENDSSTACK S EGMENTSTRING_B)B 100 DUR?)STACKSNDSC0DES5EGMENTASSUMECS:CODES,DS:DATAS,SS:STACKS STARTMOV AX,DATASMOV DS,AXMOV AX,STACKSMOV SS,AXLEASI,STRING_LMOV AX,SILEASI,STRING_ALEADI,STRING_BSUBAX,SISUBAX,3MOV CX,AXMOV BX,AXSTDREP MOVSB LEADX,STRING_B MOV AH,9INT 21HMOV DL,13MOV AH,2INT 21HMOV DL,10MOV AH,2INT 21HLEASI,STRING_B MOV CX,BX ADD SI,BX DECSI S:MOV DL,[SI]MOV AH,2INT 21H DECSILOOP S MOV AH,004CH INT 21H CODESENDS END START31NOU DL,13 32MOU AH,2 33INT 21H 34MOU DL,10 35MOU AH,2 36 INT 21H3738 LEA SI,STRING_B39 MOU CX,BX>10 ADD SI t BX41DEC SIU2 S:43 MOU DL JSI]44 MOU AH,2U5 INT 21H46 DEC SI47 LOOP S48 MOU AH v BUCHU9 INT 21H50 CODES ENDS51 END START5、显示比较两个数的大小DATA SEGMENTA DB 33HB DB 87HDATAENDSSTACK SEGMENTDW 128 DUR?)STACK ENDSCODE SEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART MOV AX,DATAMOV DS,AXMOV AL ;A'CMP B,ALJA BGAMOV DL ;A'MOV BL ;B'JMP DISPBGA: MOV DL:B'MOV BL;A'DISP: MOV AH,2INT 21HMOV DL;>'INT 21HMOV DL,BLINT 21HMOV AH,4CHINT 21HCODEENDSENDSTARTsi DATA SEGIIEHTA 呃33HB DB 87HDATA ENDS砧STOCK StCHENT06DU 128 DUP(?)07STACK ENDSDS CODE SEGNCHT鲫ASSUME CS:CODEt DS:>ATABSS:STACK1011STftRT:tIOU12MOU13M0U AL J A "14CHF15JA BGA16MOU DLjfT17M0U 0LfB*18JHF DISP19BGA:riOU2n twu 0Lt■ A*21DISP: MOU AH T222INT 21H23NOU DL, >*曲DOSBox 074, Cpu speed:24INI 2in25MOU DL、BL261HT 21H27NOU AH.4CH2B INT 21H29CODE ENDSho END START6、键盘输入10个学生的成绩,编写一个程序统计60-69分,70-79分,80-89分,90-99分及100分的人数,分别存放在Score6, Score7, Score8, Score9和Score10 单元中。
输入10个学生的成绩如下:65 94 78 82 83 95 72 68 90 98 DATAS SEGMENTINFON1 DB 13,10, 'PLEASE INPUT THOSE SCORDS(YOU NEED NOT PRESS ENTER BETWEENTHEM):$'INFON3 DB 13,10, '$'INFON2 DB 13,10, 'THE NUMBER OF SCORD6-SCORD10 IS:'SCORD6 DB 30HDB 32SCORD7 DB 30HDB 32SCORD8 DB 30HDB 32SCORD9 DB 30HDB 32SCORD10 DB 30HDB '$'DATAS ENDSSTACKS SEGMENTDB 200 DUP (0)STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKS START :MOV AX,DATASMOV DS,AXMOV AH,9LEA DX,INFON1INT 21HMOV AH,9LEA DX,INFON3INT 21HMOV CX,10S: MOV AH,1INT 21HCALL CALINT 21HMOV AH,2MOV DL,32INT 21HLOOP SMOV AH,9LEA DX,INFON2INT 21HMOV AX,4C00HINT 21HCAL PROC PUSH AX CMP AL,36H JZ G6 CMP AL,37H JZ G7CMP AL,38H JZ G8CMP AL,39H JZ G9CMP AL,31H JZ G1G6:ADD [SCORD6],1JMP WANG7:ADD [SCORD7],1JMP WANG8:ADD [SCORD8],1JMP WANG9:ADD [SCORD9],1 JMP WANG1: ADD [SCORD10],1MOV AH,1INT 21HWAN:POP AXRETCAL ENDPCODES ENDS END STARTfl1 DATAS SEGMENT02 inFonl db 13P1B,1 Please input those scords(you need03 infon3 db 13,18/$'B4 infonZ05 scordfi06 db 3207 scord?db 32 09 scordS IB db 3211 scord912 db 3213,10, the number of scordfi-sc叶(HO is:1 3 0h dbdb3 Oh3 Oh3Qh13 scordl B db 3Oh1U db *$"15 DATAS ENDS1617 STACKS SEGMENTis db 2OQ dup(O)VQ PNH 弋二、心得体会指令助记符决定了指令的功能,对应一条二进制编码的机器指令。