• 實驗4 排序和檢索程序設計 - 下載本文

    實驗4 排序和檢索程序設計

    編寫程序1:將內存中10個無符號數(長度為2字節)由小到大排序。

    編寫程序2:在上述已排好序的數據區里查找某一個數。若找到,顯示其在數據區中的位置,否則顯示‘N’字符。

    編寫主程序,通過調用程序1和程序2,實現排序和檢索。 【編程參考】

    1.子程序1流程圖(選擇排序法,見圖)

    說明:

    N:數據個數 A:有序數組首地址 CX:內外循環計數 DX:暫存外循環計數 BX、BX+SI+2:數組元素相對偏移 下標

    2.子程序2流程圖(折半查找法,見圖3-2)

    說明:

    A:有序數組首地址 KEY:查找關鍵字 DH:查找區間上限 DL:查找區間下限 CH:查找區間中間值 DI:存放查找關鍵字 SI:數組元素相對偏移

    開始 開始 CX←N-1 ;置內外循環初值 BX←0 DX←CX ;置外循環初值 SI←0 Y DL←0 ;置初值 DH←N BX←KEY 找到, 顯示位置 CH=(DH+DL)/2;取中間位置 SI←CH*2;字數據需乘2 Y 修改上限 DH←CH Y N A[BX]BX ? N CH=DL ? Y 未找到, 顯示‘N’ SI←SI+2 ;指向下一數據 CX←CX-1 N CX=0 ? Y 修改上限 DL←CH BX←BX+2 ; 外循環選次小值 CX←DX ;恢復外循環計數 CX←CX-1 N CX=0 ? Y 結束 圖 實驗4程序1流程圖

    結束 圖 實驗4 程序2流程圖 實驗5 系統調用程序設計

    編程1:將內存中的一串字符輸出,再從鍵盤上輸入一串字符,再輸出。編寫出源程序。 編程2:在屏幕中間部位開出一個窗口,隨后接收用戶按鍵,并把按鍵字符顯示在窗口的最底行;當窗口底行顯示滿時,窗口內容就自動向上滾動一行;用戶按Ctrl+C鍵時,結束運行。

    程序5_1:字符串輸入輸出程序清單

    ; 程序名:ZHSY4_2_1 DATA A B

    SEGMENT DB DB DB ENDS SEGMENT

    ASSUME CS:CODE,DS:DATA MOV MOV MOV LEA INT LEA MOV INT MOV

    MOV INT MOV MOV MOV MOV MOV MOV MOV INT MOV INT ENDS END

    START AX, DATA DS, AX AH, 09H DX, A 21H DX, B AH, 0AH 21H DL, 0AH AH, 02H 21H AL, B+1 AH, 0 SI, AX BX, DX

    BYTE PTR [BX+SI], ‘$’ ; 末尾添‘$’以便輸出 AH, 09H 21H AH, 4CH 21H

    ; 字符個數值存SI

    DX, OFFSET B+2

    ; 鍵盤輸入的字符個數送AL

    ; 輸出換行

    ‘How do you do?’,0AH,0DH ‘$’

    20,?,20 DUP(?)

    DATA CODE

    START:

    CODE

    程序5_2:窗口字符顯示程序清單

    ; 程序名:ZHSY4_2_2 ; 常量定義 WINWIDTH WINTOP

    = =

    40 8

    ; 窗口寬度 ; 窗口左上角行號

    WINLEFT WINRIGHT COLOR PAGEN CODE CTRL_C

    = = = = =

    20 17

    ; 窗口左上角列號 ; 窗口右下角行號 ; 屬性值 ; 顯示頁號 ; 結束符ASCII碼

    WINBOTTOM =

    WINLEFT+WINWIDTH-1 ; 窗口右下角列號 74H 0

    03H

    SEGMENT

    ASSUME CS:CODE START:

    MOV MOV INT MOV MOV MOV MOV MOV MOV MOV INT MOV MOV MOV MOV MOV INT NEXT:

    MOV INT CMP JE

    MOV MOV MOV INT INC CMP JNE MOV MOV MOV MOV MOV MOV MOV

    INT

    AL, PAGEN

    ; 選擇顯示頁

    AH, 5 10H

    CH, WINTOP ; 清規定窗口 CL, WINLEFT DH, WINBOTTOM DL, WINRIGHT BH, COLOR AL, 0 AH, 6 10H BH, PAGEN

    ; 定位光標到窗口左下角

    DH, WINBOTTOM

    DL, WINLEFT BH, COLOR AH, 2 10H AH, 0

    ; 接受一個鍵 16H

    AL, CTRL_C ; 是否結束鍵

    EXIT BH, PAGEN

    ; 在當前光標位置顯示所按鍵 CX, 1 AH, 0AH 10H DL

    ; 光標列數加1,準備向右移動光標

    DL, WINRIGHT+1 ; 是否越出窗口右邊界

    SETCUR CH, WINTOP ; 窗口內容上移一行 CL, WINLEFT ; 空出窗口的最底行

    DH, WINBOTTOM DL, WINRIGHT BH, COLOR AL, 1 AH, 6 10H

    MOV MOV MOV INT JMP MOV INT ENDS END

    DL, WINLEFT BH, PAGEN AH, 02H 10H NEXT AH, 4CH 21H START

    ; 光標要回到最左面 ; 置光標

    SETCUR:

    EXIT: CODE

    實驗6 模塊化程序設計

    主模塊A編程:設計一個能實現加、減、乘、除計算的程序,要求該程序接受從鍵盤輸入的兩個十六進制數,調用相應的程序模塊執行相應的計算后,計算結果以十六進制數輸出。

    模塊B編程:實現兩個十六進制數相加。 模塊C編程:實現兩個十六進制數相減。 模塊D編程:實現兩個十六進制數相乘。 模塊E編程:實現兩個十六進制數相除。

    模塊A程序(主程序)

    ; 程序名:ZHSY4_3_A.ASM

    ; 功能:顯示菜單,接受從鍵盤輸入的兩個十六進制數,

    ; 調用相應的程序模塊執行相應的計算,計算結果以十六進制數輸出。 DATA STR0 N

    SEGMENT PARA PUBLIC ‘DATA’ DB EQU DB DB DB DB DB DB DB DB DB DB DB DB DB DW

    $-STR0

    ; 數據段為PUBLIC型,便于其他模塊應用 ; N為字符串STR0的長度

    ‘ Arithmetic Proram ’,0DH,0AH,‘$’ ‘***********************’,0DH,0AH ,‘$’ ‘ 1. Addition ’,0DH,0AH,‘$’ ‘ 2. Subtration ’,0DH,0AH,‘$’ ‘ 3. Multiplication ’,0DH,0AH,‘$’ ‘ 4. Division ’,0DH,0AH,‘$’ ‘ 0. Exit ’,0DH,0AH,‘$’ ‘***********************’,0DH,0AH,‘$’ ‘ Input your choice: ’,‘$’

    0DH,0AH, ‘Input error, again enter: ’,‘$’ 0DH,0AH, ‘Input a hex number: ’,‘$’ 0DH,0AH, ‘Input a hex number again: ’,‘$’ 0DH,0AH, ‘The operation result is: ’,‘$’ ?, ? ?

    ; 存用戶輸入的兩個8位二進制數據 ; 存16位運算結果數據

    ERROR STR1 STR2 STR3 INA OUTA

    STR DATA EXTRN EXTRN EXTRN EXTRN EXTRN EXTRN CODE

    START: OP0: OP1: MENU:

    DB ENDS

    4 DUP(?), 0DH, 0AH, ‘$’

    PUBLIC STR1, STR2, STR3, INA, OUTA, STR ; 聲明公共標識符

    INNUM: NEAR OUTNUM:NEAR ADDOPT: NEAR SUBOPT: NEAR MULOPT: NEAR DIVOPT: NEAR

    SEGMENT PARA PUBLIC ‘CODE’ ASSUME CS:CODE, DS:DATA MOV MOV MOV MOV MOV MOV INT ADD LOOP MOV INT CMP JE JE JE JE JE

    CMP CMP CMP CMP MOV MOV INT JMP MOV INT CALL CALL JMP CALL

    AX, DATA DS, AX CX, 9

    ; 循環9次,顯示9行信息 ; 顯示菜單

    BX, OFFSET STR0 DX, BX AH, 09H 21H BX, N MENU AH, 01H 21H AL, ‘1’ ADDOP AL, ‘2’ SUBOP AL, ‘3’ MULOP AL, ‘4’ DIVOP AL, ‘0’ EXIT

    DX, OFFSET ERROR AH, 09H 21H OP0 21H INNUM

    ; 調用輸入數據子程序 ; 調用加法子程序 ; 調用輸出結果子程序 ; 返回主菜單

    ; 調用輸入數據子程序 ; 調用減法子程序

    ADDOPT OUTNUM OP0 INNUM

    ; 返回主菜單 ; 退出,返回DOS

    AH, 4CH

    ; 選擇錯,要求用戶重新輸入

    ; 要求用戶輸入選擇

    ; 代碼段為PUBLIC型,便于其他模塊應用

    ; 本模塊調用的模塊都是近調用

    EXIT:

    ADDOP: CALL

    SUBOP: CALL

    SUBOPT





    日本黄色视频在线观看 - 在线观看 - 影视资讯 - 爱赏网