




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、微機(jī)原理軟件實(shí)驗(yàn)實(shí)驗(yàn)1兩個(gè)多位十進(jìn)制數(shù)相加的實(shí)驗(yàn)實(shí)驗(yàn)內(nèi)容:將兩個(gè)多位十進(jìn)制數(shù)相加,要求加數(shù)和被加數(shù)均以ASCII碼形式各自順序存放以DATA1和DATA2為首的5個(gè)內(nèi)存單元中(低位在前),結(jié)果送回DATA1處。完整代碼如下:DATAS SEGMENT ;此處輸入數(shù)據(jù)段代碼 STRING1 DB 'input the first number:','$' STRING2 DB 13,10,'input the second number:','$' STRING3 DB 13,10,'the output is:',
2、'$' DATA1 DB 6 DUP(00H),'$' DATA2 DB 6 DUP(00H),'$'DATAS ENDSSTACKS SEGMENT ;此處輸入堆棧段代碼STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS,AX ;此處輸入代碼段代碼 LEA SI,DATA1 LEA DI,DATA2 L0: LEA DX,STRING1;打印字符串STRING1 MOV AH,09 INT 21HINPUT1: ;輸入第一個(gè)數(shù)
3、 MOV AH,01;輸入字符至AL中 INT 21H CMP AL,'/' JE L1 MOV SI,AL INC SI JMP INPUT1 L1: LEA DX,STRING2;打印字符串STRING2 MOV AH,09 INT 21H INPUT2: ;輸入第二個(gè)數(shù) MOV AH,01;輸入字符至AL INT 21H CMP AL,'/' JE L2 MOV DI,AL INC DI JMP INPUT2 L2: MOV SI,0 CLC;清空進(jìn)位標(biāo)志位CF MOV CX,6PLUSE: ;相加;SUB DATA1SI,30H;SUB DATA2SI,
4、30H ;這里不能使用這兩條指令,因?yàn)槿绻鸇ATA15=00H,00H-30H需要借位相減,使CF=1 MOV AL,DATA1SI ADC AL,DATA2SI AAA ;加法調(diào)整指令,可使兩個(gè)ASCII數(shù)直接相加 MOV DATA1SI,AL;和賦給DATA1SI INC SI LOOP PLUSE L3: LEA DX,STRING3;打印字符串STRING3 MOV AH,09 INT 21H MOV CX,6 MOV SI,6SHOW: DEC SI CMP DATA1SI,00H JE SHOW SHOW2: MOV DL,DATA1SI ADD DL,30H MOV AH,02
5、INT 21H CMP SI,0 JE L4 DEC SI JMP SHOW2 L4: MOV AH,4CH INT 21HCODES ENDS END START運(yùn)行結(jié)果如下:輸入為低位在前,即輸入1234和99999相加實(shí)際上是4321和99999相加(即:4321+99999=104320)實(shí)驗(yàn)2兩個(gè)數(shù)相乘的實(shí)驗(yàn)(無(wú)符號(hào)數(shù)相乘)實(shí)驗(yàn)內(nèi)容:實(shí)現(xiàn)十進(jìn)制數(shù)的乘法。要求被乘數(shù)和乘數(shù)均以ASCII碼形式各自順序存放在內(nèi)存中,乘積在屏幕上顯示出來(lái)。完整代碼如下:DATAS SEGMENT ;此處輸入數(shù)據(jù)段代碼 STRING1 DB 'the output is:','$
6、9; DATA1 DB 31H,32H,33H DATA2 DB 35H,36HDATAS ENDSSTACKS SEGMENT ;此處輸入堆棧段代碼STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS,AX ;此處輸入代碼段代碼 MOV DL,10 MOV AL,DATA10;AL=31H SUB AL,30H ;AL=01H MUL DL;乘10 ;AL=10 ADD AL,DATA11;AL=10 +32H SUB AL,30H ;AL=10 +32H-30H=12 MU
7、L DL ;AL=120 ADD AL,DATA12;AL=120+33H SUB AL,30H ;AL=120+33H-30H=123 MOV BL,AL ;BL=AL ; MOV AL,DATA20;AL=35H SUB AL,30H ;AL=5 MUL DL;乘10 ;AL=50 ADD AL,DATA21;AL=50+36H SUB AL,30H ;AL=50+36H-30H=56 MUL BL ;AX=123x56=6888 SUB DX,DX;DX清零 MOV BX,1000 DIV BX;(DX,AX)/1000,商6在AX中,余數(shù)888在DX中 PUSH DX MOV DL,A
8、L ADD DL,30H MOV AH,02 ;打印最高位6 INT 21H POP DX MOV BL,100 MOV AX,DX;888賦給AX DIV BL;AX/100,商放在AL中,余數(shù)88放在AH中 MOV DL,AL MOV CL,AH ;!這里千萬(wàn)不能把AH直接賦給AL,因?yàn)榻?jīng)過(guò)INT 21H指令后AL,AH會(huì)改變 ADD DL,30H MOV AH,02;打印第二位 INT 21H MOV BL,10 MOV AL,CL SUB AH,AH;清空AH DIV BL;AX/10,商放在AL中,余數(shù)8放在AH中 MOV DL,AL MOV CL,AH ADD DL,30H MOV
9、 AH,02;打印第三位 INT 21H MOV DL,CL ADD DL,30H MOV AH,02;打印第四位 INT 21HCODES ENDS END START運(yùn)行結(jié)果為:實(shí)驗(yàn)3字符串匹配實(shí)驗(yàn)實(shí)驗(yàn)內(nèi)容:編寫(xiě)程序?qū)崿F(xiàn)兩個(gè)字符串比較。如果相同,則屏幕顯示“match”,否則屏幕顯示”nomatch”,完整代碼如下:DATAS SEGMENT ;此處輸入數(shù)據(jù)段代碼 PRINT1 DB 'input the first string:','$' PRINT2 DB 13,10,'input the second string:','$&
10、#39; PRINT3 DB 'match','$' PRINT4 DB 'nomatch','$' PRINT5 DB 13,10,'output: ','$' STRING1 DB 30 DUP(00H),13,10,'$' STRING2 DB 30 DUP(00H),13,10,'$'DATAS ENDSSTACKS SEGMENT ;此處輸入堆棧段代碼STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:S
11、TACKS,ES:DATASSTART: MOV AX,DATAS MOV DS,AX ;此處輸入代碼段代碼 LEA DX,PRINT1;打印字符串PRINT1 MOV AH,09 INT 21H LEA SI,STRING1;STRING1地址賦給SI LEA DI,STRING2;STRING2地址賦給DI INPUT1: MOV AH,01;輸入字符至AL INT 21H CMP AL,'/'輸入字符串以/結(jié)束,轉(zhuǎn)L0 JE L0 MOV SI,AL INC SI JMP INPUT1 L0: LEA DX,PRINT2;打印字符串PRINT2 MOV AH,09 INT
12、 21H INPUT2: MOV AH,01; 輸入字符至AL INT 21H CMP AL,'/' JE L1 MOV DI,AL INC DI JMP INPUT2L1: MOV CX,30 ;CX=30代表比較30次 MOV SI,00H COMPARE:;字符串一個(gè)一個(gè)比較 MOV AL,STRING1SI;取STRING1存儲(chǔ)單位中的第SI個(gè)字符賦給AL CMP AL,STRING2SI;AL與STRING2存儲(chǔ)單位中的第SI個(gè)字符比較 JNE NOMATCH INC SI LOOP COMPARE JMP MATCH NOMATCH:;打印output:nomatc
13、h LEA DX,PRINT5 MOV AH,09 INT 21H LEA DX,PRINT4 MOV AH,09 INT 21H JMP L2 MATCH:;打印output:match LEA DX,PRINT5 MOV AH,09 INT 21H LEA DX,PRINT3 MOV AH,09 INT 21H L2: MOV AH,4CH INT 21HCODES ENDS END START運(yùn)行結(jié)果:實(shí)驗(yàn)4從鍵盤(pán)輸入數(shù)據(jù)并顯示的實(shí)驗(yàn)實(shí)驗(yàn)內(nèi)容:將鍵盤(pán)輸入的2位十六進(jìn)制數(shù)轉(zhuǎn)換為等值的二進(jìn)制數(shù),并在屏幕上顯示。列如:鍵入f2,則顯示11110010.完整代碼如下:DATAS SEGMENT
14、;此處輸入數(shù)據(jù)段代碼 STRING1 DB 'please input a string:','$' STRING2 DB 13,10,'the output is:','$' STRING3 DB 13,10,'input error',13,10,'$' DATAS ENDSSTACKS SEGMENT ;此處輸入堆棧段代碼STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS,A
15、X ;此處輸入代碼段代碼L0: LEA DX,STRING1;打印字符串STRING1 MOV AH,09 INT 21H MOV AH,01;輸入第一個(gè)字符至AL中 INT 21H CMP AL,'0' JB ERROR1 CMP AL,'9' JBE ENTER1 CMP AL,'A' JB ERROR1 CMP AL,'F' JBE ENTER1 CMP AL,'a' JB ERROR1 CMP AL,'f' JBE ENTER1 ERROR1: LEA DX,STRING3;打印字符串STR
16、ING3 MOV AH,09 INT 21H JMP L0ENTER1: CALL ASC2BCD;把ASCII碼轉(zhuǎn)化 成十進(jìn)制數(shù)BCD碼 MOV CL,4 ROL AL,CL MOV BL,AL;把高四位放到BL寄存器中 ;輸入第二個(gè)字符 MOV AH,01;輸入第二個(gè)字符至AL中 INT 21H CMP AL,'0' JB ERROR1 CMP AL,'9' JBE ENTER2 CMP AL,'A' JB ERROR1 CMP AL,'F' JBE ENTER2 CMP AL,'a' JB ERROR1 CM
17、P AL,'f' JBE ENTER2 ENTER2: CALL ASC2BCD;把ASCII碼轉(zhuǎn)化成十進(jìn)制數(shù)BCD碼 ADD BL,AL LEA DX,STRING2;打印字符串STRING2 MOV AH,09 INT 21H MOV CX,9 CLC;清空標(biāo)志位SHOW: ;顯示BL中的二進(jìn)制數(shù) DEC CX CMP CX,0 JE NEXT ;輸出完八位之后返回DOS ROL BL,1 ;循環(huán)左移一位,若溢出為1,則CF=1 JC M1 JMP M2 M1: MOV DL,'1' ;若CF=1,轉(zhuǎn)至M1打印1 MOV AH,02 INT 21H JMP
18、SHOWM2: MOV DL,'0' ;若CF=0,轉(zhuǎn)至M1打印0 MOV AH,02 INT 21H JMP SHOW NEXT: MOV AH,4CH INT 21H ASC2BCD PROC CMP AL,'9' JBE L1 ;若AL9,轉(zhuǎn)L1 SUB AL,07H ;若輸入的數(shù)為AF,或者af,則減7,A接在39H后面,AF=3AH3FH,af=5AH5FHL1: SUB AL,30H ;減30H AND AL,0FH ;濾除高位,保留低位,因?yàn)閍f恰好比AF大20H,這樣af就和AF的數(shù)值一樣了 RETASC2BCD ENDPCODES ENDSEN
19、D START輸出結(jié)果為:(若輸出不在09,AF,af內(nèi),則重新輸入)實(shí)驗(yàn)5字符和數(shù)據(jù)計(jì)算的實(shí)驗(yàn)實(shí)驗(yàn)內(nèi)容:先在屏幕上顯示“input string,”,輸入字符串; 再顯示“result=”。如為09的數(shù)字,則計(jì)數(shù)器加1,如為非數(shù)字,則直接顯示,但不計(jì)數(shù)。完整代碼如下:DATAS SEGMENT ;此處輸入數(shù)據(jù)段代碼 STRING1 DB 'input string:','$' STRING2 DB 13,10,'result=','$' STRING3 DB 13,10,'zifu:','$'DA
20、TAS ENDSSTACKS SEGMENT ;此處輸入堆棧段代碼STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS,AX ;此處輸入代碼段代碼 LEA DX,STRING1;打印字符串1 MOV AH,09 INT 21H MOV CX,0 MOV BX,0INPUT: MOV AH,01;輸入字符至AL INT 21H CMP AL,'/' ;輸入/后轉(zhuǎn)L0 JE L0 CMP AL,'0' ;下溢出轉(zhuǎn)RUZHAN JB RUZHAN CM
21、P AL,'9' ;上溢出轉(zhuǎn)RUZHAN JA RUZHAN INC CL ;若為數(shù)字則計(jì)數(shù)器+1 JMP INPUT RUZHAN:;非數(shù)字字符入棧 PUSH AX ADD BL,1 ;BL代表入棧的字符個(gè)數(shù),方便待會(huì)輸出 JMP INPUT L0: LEA DX,STRING3;打印字符串3 MOV AH,09 INT 21H CHUZHAN: POP AX MOV DX,AX MOV AH,02 INT 21H SUB BL,1 CMP BL,0 ;入了多少個(gè)棧,出多少棧 JNE CHUZHANOUTPUT:;輸出數(shù)字的個(gè)數(shù) LEA DX,STRING2;打印字符串2 M
22、OV AH,09 INT 21H MOV DL,CL ADD DL,30H MOV AH,02 INT 21H MOV AH,4CH INT 21HCODES ENDS END START輸出結(jié)果為:(這里非數(shù)字字符輸出順序與輸入順序相反)實(shí)驗(yàn)6 改變年月日的實(shí)驗(yàn)實(shí)驗(yàn)內(nèi)容:先在屏幕上顯示“what is the date(mm/dd/yy)?“從鍵盤(pán)輸入的月日年能把計(jì)算機(jī)的系統(tǒng)日期改為你鍵入的值。完整代碼如下:DATAS SEGMENTS1 DB 0AH,0DH,"what is the date(mm/dd/yy)?:",'$'DATAS ENDSSTAC
23、KS SEGMENTSTACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS,AX MOV DX,OFFSET S1 MOV AH,09H;打印字符串"what is the date(mm/dd/yy)?:" INT 21H MOV DX,0H;DX=CH=0 MOV CH,0 ;MOV SI,0AHKAISHI: MOV CL,0;用來(lái)壓縮移位SHURU: MOV AH,01H;輸入字符存入AL中 INT 21H MOV AH,0AH;10賦給AH CMP
24、AL,0DH;AL=13則結(jié)束,設(shè)置日期 JE GENGGAI CMP AL,'/' ;計(jì)算來(lái)判斷是年,月,日 JE ZIZENG AND AL,0FH CMP CH,0;等于0則轉(zhuǎn)月 JE YUE CMP CH,1;等于1則轉(zhuǎn)日 JE RI CMP CH,2;等于2則轉(zhuǎn)年 JE NIAN ZIZENG:INC CH JMP SHURU;無(wú)條件轉(zhuǎn)移至SHURUYUE: ADD DH,AL CMP CL,0 JNZ KAISHI INC CL MOV AL,DH MUL AH MOV DH,AL JMP SHURU;無(wú)條件轉(zhuǎn)移至SHURURI: ADD DL,AL CMP CL,
25、0 JNZ KAISHI INC CL MOV AL,DL MUL AH MOV DL,AL JMP SHURU;無(wú)條件轉(zhuǎn)移至SHURUNIAN: CMP CL,0 JNZ XIABU ADD BL,AL MOV CL,03H;3賦給CL JMP SHURU;無(wú)條件轉(zhuǎn)移至SHURUXIABU: MOV AH,0;清空AH MOV SI,BX;SI=BX SHL BX,CL;BX左移三位,乘以8 SHL SI,1;SI左移一位,乘以2 ADD BX,SI;兩個(gè)相加,即乘以10 ADD BX,AX;BX加上新輸入的數(shù)字 JMP SHURUGENGGAI: MOV CX,BX MOV AH,2BH;
26、設(shè)置日期 INT 21H MOV AH,4CH INT 21HCODES ENDS END START輸出結(jié)果為:(設(shè)置2008年12月3日,注意如果要設(shè)置好系統(tǒng),否則可能計(jì)算機(jī)的日期改變不了)實(shí)驗(yàn)7將小寫(xiě)字母轉(zhuǎn)換為大寫(xiě)字母的實(shí)驗(yàn)實(shí)驗(yàn)內(nèi)容:接收鍵入字符(以Ctrl-c為結(jié)束),將小寫(xiě)字母變?yōu)榇髮?xiě)字母,并在屏幕上顯示。 完整代碼如下:DATAS SEGMENT ;此處輸入數(shù)據(jù)段代碼 STRING1 DB 13,10,'please input a string:','$' STRING2 DB 13,10,' the output string is:
27、39;,'$' DATA DB 100 DUP(00H),'$'DATAS ENDSSTACKS SEGMENT ;此處輸入堆棧段代碼STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS,AX ;此處輸入代碼段代碼M: LEA SI,DATA LEA DX,STRING1;打印字符串1 MOV AH,09 INT 21HINPUT: MOV AH,01;輸入字符C INT 21H CMP AL,03H JE OUTPUT CMP AL,'
28、a' JB M CMP AL,'z' JA M SUB AL,20H ;減20H變小寫(xiě) MOV SI,AL INC SI JMP INPUT OUTPUT: LEA DX,STRING2;打印字符串2 MOV AH,09 INT 21H LEA SI,DATAL1: MOV DL,SI CMP DL,00H JE ENDING MOV AH,02 INT 21H INC SI JMP L1ENDING: MOV AH,4CH INT 21HCODES ENDS END START運(yùn)行結(jié)果為:(如果輸入的不在af中,則重新輸入)實(shí)驗(yàn)8排序?qū)嶒?yàn)(09)實(shí)驗(yàn)內(nèi)容:從首地址為1
29、000H開(kāi)始存放10個(gè)數(shù),將這些數(shù)按降序排列.完整代碼如下:DATAS SEGMENT ;此處輸入數(shù)據(jù)段代碼 STRING1 DB 'please input 10 numbers:','$' STRING2 DB 13,10,' the sorted numbers are:','$' ORG 1000H DATA DB 10 DUP(00H),'$'DATAS ENDSSTACKS SEGMENT ;此處輸入堆棧段代碼STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DAT
30、AS,SS:STACKSSTART: MOV AX,DATAS MOV DS,AX ;此處輸入代碼段代碼 LEA DX,STRING1;輸入提示語(yǔ)'plese input 10 numbers:' MOV AH,09 INT 21H MOV CX,10 LEA SI,DATAINPUT: MOV AH,01;輸入字符至AL INT 21H MOV SI,AL;把AL賦給偏移地址為SI指向的單元 INC SI LOOP INPUT MOV BL,0L0: MOV CX,9 LEA SI,DATAL1: ;比較第SI個(gè)數(shù)和第SI+1個(gè)數(shù)的大小 MOV AL,SI INC SI CM
31、P AL,SI JB CHANGE ;若小于則轉(zhuǎn)CHANGEL2: LOOP L1 ;小循環(huán)(CX自動(dòng)減1),若CX=0則結(jié)束 L3: INC BL CMP BL,10 JB L0 ;若大循環(huán)有10次了,則轉(zhuǎn)OUTPUT JMP OUTPUTCHANGE:;交換兩個(gè)數(shù) XCHG AL,SI;交換, MOV SI-1,AL;賦給SI-1 JMP L2OUTPUT: LEA DX,STRING2;輸入提示語(yǔ)' the sorted numbers are:' MOV AH,09 INT 21H MOV CX,10 LEA SI,DATAL4:;循環(huán)輸出 MOV DL,SI MOV
32、AH,02 INT 21H INC SI LOOP L4 MOV AH,4CH INT 21HCODES ENDS END START輸出結(jié)果為:實(shí)驗(yàn)8排序?qū)嶒?yàn)(多位數(shù)排序)實(shí)驗(yàn)內(nèi)容:從首地址為1000H開(kāi)始存放10個(gè)數(shù),將這些數(shù)按降序排列.完整代碼如下:DATA SEGMENT ;CHANGE函數(shù)DI,SI為入口函數(shù),交換SI,DI的值,SI,DI值已經(jīng)大變BUFFER DB 100 DB ? DB 100 DUP(?) DB "$" ORG 1000HN EQU 10STOREDATA DB 110 DUP(30H) ;每個(gè)數(shù)最大為10位TEMP1 DB 12 DUP(
33、24H) ;中間變量TEMP2 DB 12 DUP(24H) ;中間變量TEMP3 DB 12 DUP(24H) ;中間變量DATA ENDSSTACK SEGMENT PARA STACK DW 60H DUP(0)STACK ENDSCODE SEGMENTASSUME DS:DATA,CS:CODE,SS:STACKSTART: MOV AX,DATA MOV DS,AX ;MOV AX,STACK ;MOV SS,AX ;可以有可以無(wú),因?yàn)槠湟呀?jīng)默認(rèn)為SS了 MOV DX,OFFSET BUFFER MOV AH,0AH INT 21H CALL TURNLINE LEA SI,BUF
34、FER LEA DI,STOREDATA CALL BUFFERTOSTORE CALL TURNLINE LEA SI,STOREDATA CALL COMPARE GO: MOV SI,OFFSET STOREDATA MOV CL,110PRINT:MOV DL,SI CMP DL,30H JNE PRINT1 CMP AL,1 JE PRINT1 ;打印該有的0 INC SI LOOP PRINTPRINT1: CMP DL,2CH JE PRINT0 JIXU: MOV AH,02H INT 21H CMP DL,2CH JNE GOON5 MOV AL,0 JMP GOON6PRI
35、NT0:CMP AL,0 JNE JIXU MOV DL,30H MOV AH,02H INT 21H MOV DL,2CH JMP JIXU GOON5:MOV AL,1GOON6:INC SI LOOP PRINT MOV AH,01H INT 21H MOV AH,4CH INT 21HCOMPARE PROC ;以SI為入口傳遞 MOV BX,SI ; LEA DI,TEMP2;GETLAST: ; CALL TEMPSAVE ; INC DL ; CMP DL,N ; JE GOON1 ; LEA DI,TEMP2 ; JMP GETLAST ;TEMP2始終指向當(dāng)前最后一個(gè)數(shù);GO
36、ON1: MOV CL,NCOMPARE1: MOV SI,BX LEA DI,TEMP1 CALL TEMPSAVE ;TEMP1指向第一個(gè)數(shù),錯(cuò)啦,為什么呢,因?yàn)槟菢颖炔粫?huì)進(jìn)行變化 MOV SI,BX MOV DH,1 LEA DI,TEMP1 PUSH SI COMPARE2: LODSB MOV AH,DI CMP AL,2CH JE EQUAL CMP AL,AH JB BELOW CMP AL,AH JA ABOVE INC DI JMP COMPARE2BELOW: INC DH POP SI PUSH SI LEA DI,TEMP1 CALL TEMPSAVE ;使TEMP1存
37、入當(dāng)前最小,因?yàn)門(mén)EMP1當(dāng)前元已經(jīng)存在了 ;不可以再轉(zhuǎn)存,否則出錯(cuò) POP SI ADD SI,N INC SI PUSH SI CMP DH,CL JA GOON2 LEA DI,TEMP1 JMP COMPARE2 EQUAL: INC DH ;不交換 POP SI ADD SI,N INC SI PUSH SI CMP DH,CL JA GOON2 ;比較CL次 LEA DI,TEMP1 JMP COMPARE2 ABOVE: ;TEMP1始終指向當(dāng)前最小,若當(dāng)前值大于時(shí)最小時(shí)前移 ;此時(shí)TEMP1不便,只需前移就好,交換前后兩個(gè)數(shù)的大小 INC DH POP SI PUSH SI S
38、UB SI,N SUB SI,1 MOV DI,SI POP SI PUSH SI CALL CHANGE POP SI ADD SI,N INC SI PUSH SI CMP DH,CL JA GOON2 ;比較CL次 LEA DI,TEMP1 JMP COMPARE2 GOON2: LOOP COMPARE1 JMP GO RET COMPARE ENDP ;存儲(chǔ)函數(shù)思路:從最后一位開(kāi)始存,首位均置零,最高10位 BUFFERTOSTORE PROC MOV CL,10 ADD SI,2 ; SUB DI,3 STORE: MOV AL,SI CMP AL,2CH ;直到SI指向,(結(jié)束一
39、個(gè)數(shù)),再進(jìn)行存儲(chǔ) JE STORE2 INC SI JMP STORESTORE2:MOV BX,SI ;存儲(chǔ)SISTOREIN: ADD DI,N ;ADD DI,3 MOV DX,DI ;存儲(chǔ)DISTOREIN1: MOV AL,SI MOV DI,AL DEC SI DEC DI LEA AX,BUFFER ADD AX,1 ;注意邊界要取好,因其也有值 CMP SI,AX JE JMP1 MOV AL,SI CMP AL,2CH JE JMP1 JMP STOREIN1 ;條件控制循環(huán)JMP1 :MOV SI,BX INC SI ;進(jìn)行存儲(chǔ)下個(gè)數(shù) INC DX ;使DI加1因?yàn)榍皫孜?/p>
40、已經(jīng)用了 MOV DI,DX LOOP STORE ;MOV AL,"$" ;INC DI ;MOV DI,AL RET BUFFERTOSTORE ENDP CHANGE PROC PUSH DI PUSH SI LEA DI,TEMP3 CALL TEMPSAVE ;TEMP3存放SI當(dāng)前值 POP DI ;往SI存入值 POP SI PUSH SI CALL TEMPSAVE ;*把DI的值存入SI中 POP DI LEA SI,TEMP3 CALL TEMPSAVE ;*把SI的值存入DI中 RET CHANGE ENDP TEMPSAVE PROC ;存儲(chǔ)中間變量
41、的函數(shù),以DI,SI,為入口,以,標(biāo)志位結(jié)束 STEMP:LODSB MOV DI,AL INC DI CMP AL,2CH JE NEXT JMP STEMP NEXT: RET TEMPSAVE ENDP TURNLINE PROC MOV DL,0AH MOV AH,02H INT 21H RET TURNLINE ENDP CODE ENDSEND START輸出結(jié)果為:實(shí)驗(yàn)9設(shè)置光標(biāo)的實(shí)驗(yàn)實(shí)驗(yàn)內(nèi)容:設(shè)置光標(biāo),起始位置為第5行第6列,結(jié)束位置為第8行第6列。完整代碼如下:DATAS SEGMENT ;此處輸入數(shù)據(jù)段代碼 DATAS ENDSSTACKS SEGMENT ;此處輸入堆棧段
42、代碼STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS,AX ;此處輸入代碼段代碼 MOV AH,08;輸入無(wú)回顯 INT 21H MOV DH,5;設(shè)置行 MOV DL,6;設(shè)置列 MOV BH,0;設(shè)置頁(yè) MOV AH,02 INT 10H MOV AH,08;輸入無(wú)回顯 INT 21H MOV DH,8;設(shè)置行 MOV DL,6;設(shè)置列 MOV BH,0;設(shè)置頁(yè) MOV AH,02 INT 10H MOV AH,08;輸入無(wú)回顯 INT 21H MOV AH,4CH I
43、NT 21HCODES ENDS END START輸出結(jié)果為:(任意輸入一個(gè)字符,光標(biāo)跳到5行6列,再任意輸入一個(gè)字符,光標(biāo)跳到8行6列)這里光標(biāo)截圖后是看不到的,所以就不截圖了實(shí)驗(yàn)10 計(jì)算N!的實(shí)驗(yàn)實(shí)驗(yàn)內(nèi)容:在鍵盤(pán)輸入數(shù)字,結(jié)果顯示在屏幕上。DATAS SEGMENT ;段定義(結(jié)構(gòu)) ;此處輸入數(shù)據(jù)段代碼 P1 DB 'input the number(0-6):','$' p2 DB 13,10,'the result is:','$'DATAS ENDSSTACKS SEGMENT ;此處輸入堆棧段代碼 ST1 DW 40H DUP(0)STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS ;段分配(結(jié)構(gòu))START: MOV AX,DATAS ;設(shè)置段地址(結(jié)構(gòu)) MOV
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 主題班會(huì)教學(xué)工作計(jì)劃
- 薪酬體系設(shè)計(jì)計(jì)劃
- 加強(qiáng)企業(yè)文化建設(shè)的年度方案計(jì)劃
- 2025雇傭合同,公司勞動(dòng)合同范本
- 2025跨境電商產(chǎn)品合同模板
- 2025地下連續(xù)墻施工合同2
- 移動(dòng)支付系統(tǒng)安全防護(hù)措施指南
- 性病知識(shí)講座
- 廣西北海市合浦縣重點(diǎn)達(dá)標(biāo)名校2024屆中考四模數(shù)學(xué)試題含解析
- 電氣工程行業(yè)試題集
- 自動(dòng)轉(zhuǎn)運(yùn)小車(chē)結(jié)構(gòu)及控制系統(tǒng)設(shè)計(jì)說(shuō)明書(shū)
- 《醫(yī)學(xué)心理學(xué)》課件:第11章 醫(yī)患關(guān)系
- 飲水設(shè)備巡查維護(hù)記錄表
- 洛陽(yáng)十三朝古都課件
- RomaxDesigner 培訓(xùn)教程(合)教學(xué)提綱
- 《中國(guó)傳統(tǒng)服飾——漢服》PPT課件
- 顧潔Storytime
- 小學(xué)信息技術(shù)認(rèn)識(shí)《畫(huà)圖》
- 【精品】宇通客車(chē)涂裝車(chē)間實(shí)習(xí)報(bào)告
- 冷凍機(jī)的制冷效率與運(yùn)行電費(fèi)
- 物業(yè)服務(wù)流程圖
評(píng)論
0/150
提交評(píng)論