




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 本科實驗報告實驗名稱: 匯編實驗 課程名稱:匯編語言實驗時間:任課教師:實驗地點:實驗教師:實驗類型: 原理驗證 綜合設計 自主創新學生姓名:學號/班級:組 號:學 院:信息與電子學院同組搭檔:專 業:電子信息工程成 績:匯編語言實驗報告實驗一 DOS 環境下的匯編語言編程環境使用(基礎與驗證型)一、實驗要求和目的1、掌握匯編語言程序設計的基本流程和學會上機開發簡單程序;2、熟練掌握宏匯編程序MASM 的使用;3、熟練掌握連接程序LINK 的使用;4、熟練掌握DEBUG 的使用;二、軟硬件環境1、硬件環境:計算機系統 windows;2、軟件環境:裝有MASM、DEBUG、LINK、等應用程
2、序。三、實驗涉及的主要知識匯編語言程序設計上機開發過程如圖1.1 所示。四、實驗內容1、匯編、鏈接并調試給出的簡單程序,找出程序中的錯誤。(一)錄入并建立匯編語言源程序文件(ASM 文件)(2) 用匯編程序MASM 將ASM 文件匯編成目標程序文件(OBJ 文件)(3) 用連接程序LINK 生成可執行程序文件(EXE 文件)(4) 程序的調試2、完成程序設計:分類統計字數組data 中正數、負數和零的個數,并分別存入內存字變量Positive、Negative和Zero 中,數組元素個數保存在其第一個字中。使用Debug 查看Positive、Negative 和Zero 三個變量的數據。五、
3、實驗步驟1. 輸入給出的程序發現其中有錯誤,根據提示和觀察,發現:ADDITION后未打冒號,CMP錯打為COM。修改原代碼即可。修改后的代碼:DATAS SEGMENT word1 DW 1,9078H byte1 db 21,'world' dd 12345678h msg db 'Hello everyone!$'DATAS ENDSSTACKS SEGMENT sta dw 20 dup(?) top equ size sta STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART
4、: MOV AX,DATAS MOV DS,AX mov dx,offset msg mov ah,9 int 21hnop mov ax,0 mov bx,0 mov bx,1haddition: add ax,bx inc bx cmp bx,10 jae addition MOV AH,4CH INT 21HCODES ENDSEND START程序運行正常。實驗二流程圖和代碼如下:從第一個數開始SATAS SEGMENTary db 1,-6, -7,0positive dw 0negative dw 0zero dw 0 數字為正?為負?為零?DATAS ENDSSTACKS SEG
5、MENT ;此處輸入堆棧段代碼STACKS ENDSCODES SEGMENT 為零;zero+為正,positive+ ASSUME CS:CODES,DS:DATAS,SS:STACKS 為負;negative+START: MOV AX,DATAS MOV DS,AX mov cx,3 mov si,0 L1:mov al,arysi cmp al ,0否是否結束? jg L2 jl L4 inc zero jmp L3 L2:inc positive是 jmp L3 L4: inc negative結束 L3:inc si dec cx jnz L1 mov ax,positive m
6、ov bx,negative mov dx,zero MOV AH,4CH INT 21HCODES ENDS END START根據測試數據,則應有1個正數,1個零,2個負數。結果正確換一個輸入:結果正確實驗二 算術運算類操作實驗 (基礎與設計)一、實驗要求和目的1、了解匯編語言中的二進制、十六進制、十進制、BCD 碼的表示形式;2、掌握各類運算類指令對各狀態標志位的影響及測試方法;3、熟悉匯編語言二進制多字節加減法基本指令的使用方法;4、熟悉無符號數和有符號數乘法和除法指令的使用;5、掌握符號位擴展指令的使用。6、掌握BCD 碼調整指令的使用方法二、軟硬件環境1、硬件環境:計算機系統 wi
7、ndows;2、軟件環境:裝有MASM、DEBUG、LINK、等應用程序。三、實驗涉及的主要知識本實驗主要進行算術運算程序設計和調試,涉及到的知識點包括:1加減法處理指令主要有加法指令 ADD,帶進位加法ADC,減法指令SUB,帶進位減法指令SBB。2乘除法指令和符號位擴展指令主要有無符號數乘法指令MUL,帶符號數乘法指令IMUL,無符號數除法指令DIV,帶符號數除法指令IDIV,以及符號位從字節擴展到字的指令CBW 和從字擴展到雙字的指令CWD。3BCD 碼的調整指令主要有非壓縮的 BCD 碼加法調整指令DAA,壓縮的BCD 碼減法調整指令DAS,非壓縮的BCD 碼加法調整指令AAA,非壓縮
8、的BCD 碼減法調整指令AAS,乘法的非壓縮BCD碼調整指令AAM,除法的非壓縮BCD 碼調整指令AAD。8088/8086 指令系統提供了實現加、減、乘、除運算的上述基本指令, 可對表 1 所示的數據類型進行數據運算。 表 1 數據類型數據運算表各指令的格式、功能及其對標志位的影響等細節知識,請同學們查閱相關書籍,這里不再贅余。四、實驗內容與步驟1、對于兩組無符號數,087H 和034H,0C2H 和5FH,試編程求這兩組數的和差積商,并考慮計算結果對標志寄存器中狀態標志位的影響。代碼如下:流程圖:依次計算兩組數的加減乘除,用add,sub,mul,div指令即可。實驗1:DATAS SEG
9、MENT buf1 db 087h,034h buf2 db 0c2h,05fh buf3 db 2 dup(?)DATAS ENDSSTACKS SEGMENT ;此處輸入堆棧段代碼STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS,AX mov si,0 mov al,buf1si mov bl,buf1si+1 add al,bl mov buf3si,al mov al,0 mov buf3si+1,ah MOV AH,4CH INT 21HCODES ENDSEND
10、 START之后更改buf1和buf2中的值完成下表計算狀態標志表達式結果cfafzfofsfpf087h+034h00bb010001087h-034h0053000000087h*034h1b6c000001087h/034h00020000010c2h+5fh01210100010c2h-5fh00630100010c2h*5fh47fe0100010c2h/5fh0247010001實驗2:在數據段定義了兩個多精度的有符號16 進制數,FIRST 和SECOND ,1)求兩數的和與差,并將結果存放在THIRD 為首地址的緩沖區中;2)如果把兩組數據當作十進制數據來處理,再次求兩數的和與
11、差,并將結果存放在FORTH 為首地址的緩沖區中。試編程實現上述運算。程序代碼如下:DATAS SEGMENTfirst DB 45H,82, 96H,57Hsecond DB 12H,46H,83H,45Hthird db 4 dup(?)forth db 4 dup(?)DATAS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATASSTART: MOV AX,DATAS MOV DS,AXmov si,0 mov cx,4 loop1: mov al,firstsi mov bl,secondsi add al,bl mov thirdsi,al inc
12、si dec cx jnz loop1 MOV AH,4CH INT 21HCODES ENDS END START十六進制:十進制:結果: 16進制結果 10進制結果FIRST +SECOND 57 C9 19 9CH 58 29 80 02DFIRST -SECOND 33 3C 13 12H 33 36 13 12D實驗3:編程計算((Z +X*Y -328) -V)/ Y,其中X、Y、Z、V 均為16 位帶符號數,假設初始數據分別裝入X、Y、Z、V 單元,要求上式計算結果的商存入AX,余數存入DX 寄存器。同學自行給出初始值加以驗證程序。程序代碼 如下: DATAS
13、 SEGMENT V DW ? X DW ? Y DW ? Z DW ? DATAS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS START: MOV AX,DATAS MOV DS,AX MOV AX,X IMUL Y MOV CX,AX MOV BX,DX MOV AX,Z CWD ADD CX,AX ADC BX,DX SUB CX,328 SBB BX,0 MOV AX,V CWD SUB CX,AX SBB DX,BX MOV AX,CX IDIV Y MOV AH,4CH INT 21H CODES ENDS END START測試用例:
14、V=50,X=72,Y=5,Z=30AX=2,DX=2。與實際計算結果相符。實驗三 字符串操作實驗(設計性實驗)一、實驗要求和目的1了解匯編語言字符串處理基本流程;2熟悉匯編語言字符串處理基本指令的使用方法;3掌握利用匯編語言實現字符串處理的程序設計方法。二、軟硬件環境1、硬件環境:計算機系統 windows;2、軟件環境:裝有MASM、DEBUG、LINK、等應用程序。三、實驗涉及的主要知識1、字符串處理基本操作流程(1)利用SI 寄存器保存源串首地址;(2)利用DI 寄存器保存目的串首地址;(3)利用CX 寄存器保存字符串長度;(4)利用CLD 或STD 指令設置字符串處理方向;(5)利用
15、字符串處理指令實現相關處理。其中,CLD 指令使DF=0,在執行串處理指令時可使地址自動增量;STD 使DF=1,在執行串處理指令時可使地址自動減量。提示:字符串處理一般都涉及到源串和目的串,匯編語言規定源串在數據段中定義,目的串在附加段中定義。2、重復前綴指令,重復次數由計數寄存器CX 中存放的值決定,指令每重復執行一次,計數器CX 中值減1,當CX 中值減至0 時,停止重復執行,繼續執行下一條指令REP 無條件重復前綴,重復串操作直到計數寄存器的內容CX 為0 為止。經常與REP配合工作的字符串處理指令有MOVS、STOS 和LODS。REPE/REPZ 判斷計數寄存器的內容CX 是否為0
16、 或ZF=0(即比較的兩個操作數不等),只要滿足一個則重復執行結束,否則繼續執行。可以與REPE/REPZ 配合工作的串指令有CMPS 和SCAS。REPNE/REPNZ 判斷計數寄存器的內容是否為0 或ZF=1(即比較的兩個操作數相等),只要滿足一個則重復執行結束,否則繼續執行。可以與REPE/REPZ 配合工作的串指令有CMPS 和SCAS。3、字符串處理基本指令(1)MOVS 傳送指令格式:MOVS DST,SRC 或MOVSB(傳送字節)或MOVSW(傳送字)。后面兩種形式需要與REP 指令結合使用。該指令把由源變址寄存器(SRC)指向的數據段中的一個字(或字節)數據傳送到由目的變址寄
17、存器(DST)指向的附加段中的一個字(或字節)中去,同時,根據方向標志及數據格式(字或字節)對源變址寄存器和目的變址寄存器進行修改。(2)STOS 存入串指令格式:STOS DST 或STOSB(存入字節)或STOSW(存入字)。該指令把 AL 或AX 的內容存入由目的變址寄存器指向的附加段的某單元中,并根據方向標志(DF)和數據類型修改目的變址寄存器的內容。(3)LODS 從串取指令格式:LODS SRC 或LODSB(取字節)或LODSW(取字)。該指令把由源變址寄存器指向的數據段中某單元的內容傳送到 AL 或AX 中,并根據方向標志和數據類型修改源變址寄存器的內容。(4)CMPS 串比較
18、指令格式:CMPS SRC,DST 或CMPSB 或CMPSW。該指令把由源變址寄存器指向的數據段中的一個字節或字與由目的變址寄存器所指向的附加段中的一個字節或字相減,但不保存結果,只根據結果設置條件標志。該指令與 REPE/REPZ 或REPNE/REPNZ 結合,可以比較兩個數據串。(5)SCAS 串掃描指令格式:SCAS DST 或SCASB 或SCASW。該指令把 AL 或AX 的內容與由目的變址寄存器所指向的附加段中的一個字節或字進行比較,并不保存結果,只根據結果設置條件碼。該指令與 REPE/REPZ 或REPNE/REPNZ 結合,可以從一個字符串中查找一個指定的字符。總的來說,
19、字符串處理可以將緩沖區中一個數據塊搬至存儲器的另一處,比較兩個字符串是否相等,從緩沖區中一個數據塊尋找某一個特定的關鍵字,順次從一個緩沖區取字符或順次向一個緩沖區存字符等。四、實驗內容與步驟1、比較緩沖區中兩字符串是否相同,相同則AL 返回0,不同AL 返回1。為了使程序的通用性比較好,字符串長度要求自動獲取。(要求用字符串處理方法)程序代碼如下:data segmentchuan1 db 'asdfghjklb'chuan2 db 'asdfghjklb'chuan0 dw ?data endscode segmentok:mov al,1jmp endlst
20、art:mov ax,datamov ds,axlea si,chuan1lea di,chuan2mov bx,0mov cx,offset chuan2-offset chuan1cmp cx,offset chuan0-offset chuan2jne oks:mov ah,si+bxcmp ah,di+bxjne okadd bx,1mov al,0loop sendl:nopmov ax,4c00hint 21hcode endsend start2、 編寫程序,將內存中某一區域的數據傳送到另一區域。(要求用字符串處理方法)data segmentchuan1 db 'zxc
21、vbnmqwertyuiop'chuan2 db 100 dup (?)data endscode segmentstart:mov ax,datamov ds,axmov es,axlea si,chuan1lea di,chuan2mov cx,offset chuan2-offset chuan1cldrep movsbmov ax,4c00hint 21hcode endsend start3、編寫程序,在已知字符串中搜索特定字符!,若找到則AL 返回0,找不到AL 返回1。(要求用字符串處理方法)DATAS SEGMENT S1 DB 'w!er' S2 DW
22、 $DATAS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATASSTART: MOV AX,DATAS MOV DS,AX LEA DI,S1 MOV ES,AX MOV AL,'!' MOV CX,S2-offset S1 REPNE SCASB JNE B1 MOV AL,0 JMP S B1: MOV AL,1 S: MOV AH,4CH INT 21HCODES ENDSEND START 4、 編寫程序,統計一串字符串中字符"."出現的次數。(要求用字符串處理方法);代碼及流程圖見下:data segmentch
23、uan db '.f2t$'daan dw ?data endscode segmentok:inc word ptrsiinc bxjmp sstart:mov ax,datamov ds,axlea di,chuanlea si,daanmov bx,0mov al,'$'clds:cmp byte ptr di+bx,'$'je endlcmp byte ptr di+bx,'.'je okinc bxloop smov al,1endl:nopmov ax,4c00hint 21hcode endsend start五、思
24、考與練習1、如果不用字符串處理方法,而用其他方法如何實現題目2 的程序設計,比較兩種方法效果?答:用mov指令和loop循環配合,同樣可以達到復制字符串的目的,但其中的循環比較繁瑣,不如用字符串傳送函數方便。實驗四 分支和循環程序設計實驗(設計性實驗)一、實驗要求和目的1熟悉匯編語言程序設計結構;2熟悉匯編語言分支程序基本指令的使用方法;3掌握利用匯編語言實現單分支、雙分支、多分支的程序設計方法;4了解匯編語言循環程序設計的基本流程;5熟悉匯編語言循環基本指令的使用方法;6掌握利用匯編語言的循環指令完成循環程序設計方法。二、軟硬件環境1、硬件環境:計算機系統 windows;2、軟件環境:裝有
25、MASM、DEBUG、LINK、等應用程序。三、實驗涉及的主要知識在實際應用中,經常根據一些條件來選擇一條分支執行。匯編語言的條件判斷主要是通過狀態寄存器中的狀態位、無符號數相減或有符號相減而導致的結果來進行。1無條件轉移指令JMP無條件轉移指令JMP 是使程序無條件轉移至目標處,又分為段內轉移、段間轉移。2條件轉移指令JXX條件轉移指令可分為三大類:1)簡單條件轉移指令指令。根據單個標志位的狀態判斷轉移條件。2)無符號數條件轉移指令。假設在條件轉移指令前使用比較指令,比較兩個無符號數A,B,指令進行的的操作是A-B,其轉移指令如下:在匯編程序設計中,要熟練使用循環指令和跳轉等指令來實現循環,
26、理解循環體結構中的初始化部分、循環體、結束部分,并且要結合前面分支結構相關的知識點,加深對循環結構的理解和掌握。循環結構的組成及其設計方法的知識要點有:1、循環程序的基本結構通常由3 部分組成1) 初始化部分建立循環初始值,為循環做準備,如設置地址指針,(BX/SI/DI/BP),初始化循環控制變量或計數器(CX),數據寄存器(AX/DX)初值等.2) 循環體循環體是循環程序的主體,是程序中重復執行的程序段.它是由循環工作部分、修改部分、和循環控制部分。循環工作部分:完成程序功能的主要程序段,用于解決程序的實際任務;修改部分:對循環參數進行修改,并為下一次循環做準備;循環控制部分:判斷循環結束
27、條件是否滿足。通常判斷循環結束方法: 用計數控制循環;循環是否進行了預定的次數。 用條件控制循環。循環終止條件是否滿足。3)結束處理處理部分主要是對循環的結果進行處理,比如現實提示信息等,很多時候沒有此部分程序。2、循環控制指令:指令格式 執行操作 循環結束條件LOOP 標號 CX=CX-1; 若CX=0,則循環 CX=0LOOPNZ/LOOPNE 標號 CX=CX-1; 若CX=0 且ZF=0,則循環 CX=0 或ZF=0LOOPZ/LOOPE 標號 CX=CX-1; 若CX=0 且ZF=1,則循環 CX=0 或ZF=1JCXZ 標號 僅測試(CX)=0? 若等于0,則轉移到目標地址,否則就
28、順序執行3、 循環控制可以分為:計數循環和條件循環。作為計數循環,一般是指循環次數是已知的情況,在程序設計的的循環時,先應將循環次數送入計數器CX 中進行計數,在循環體中使用LOOP 等循環指令。當然,也可以通過其他方式來進行,如cxcx-1,jnz 等結合實現。四、實驗內容與步驟1、判斷方程AX2+BX+C=0 是否有實根。若有實根,則將字節變量tag 置1,否則置0。假設A、B、C 均為字節變量,數據范圍為-128127。程序代碼如下:data segmentA db 20B db 10C db 20tar db ?data endscode segmentyes:mov al,1mov
29、tar,aljmp endlstart:mov ax,datamov ds,axmov al,Bmul almov cx,axmov al,Amul Cmov bx,axmov ax,4mul bxsub ax,cxsbb dx,0cmp dx,0jl yesmov al,0mov tar,alendl:nopmov ax,4c00hint 21hcode endsend start2、編寫一個程序,判別鍵盤上輸入的字符;若是1-9 字符,則顯示之;若為A-Z 字符,顯示“C”;若為a-z 字符,顯示“c”;若是回車字符<CR>(其ASCII 碼為0DH),則結束程序,若為其它字符
30、則顯示顯示“R”。程序代碼如下:assume cs:code,ds:datadata segmentbuf db ?biaozhi db 0data endscode segmentzhongjian1:inc biaozhijmp s1show0:cmp biaozhi,0je endamov dl,almov ah,2int 21hjmp endlzhongjian2:inc biaozhijmp s2show1:cmp biaozhi,0je endbmov dl,67mov ah,2int 21hjmp endlzhongjian3:inc biaozhijmp s3show2:cmp
31、 biaozhi,0je endcmov dl,99mov ah,2int 21hjmp endlshow3:mov dl,82mov ah,2int 21hjmp endlstart:mov ax,datamov ds,axmov ah,1int 21hcmp al,57jna zhongjian1s1:cmp al,49jnb show0enda:mov byte ptr biaozhi,0cmp al,65jnb zhongjian2s2:cmp al,90jna show1endb:mov byte ptr biaozhi,0cmp al,97jnb zhongjian3s3:cmp
32、al,122jna show2endc:mov byte ptr biaozhi,0cmp al,0dhje endljmp show3endl:nopmov ax,4c00hint 21hcode endsend start3、編寫程序,在字符串變量STRING 中存有一個以$為結尾的ASCII 碼字符串,要求計算字符串的長度,并把它存入LENGTH 單元中。(要求用條件控制循環方法,并且字符串分數據類型是字節和字兩種情況)程序代碼如下:assume cs:code,ds:datadata segmentSTRING db 'asdfghjkl$'LENGTH db ?dat
33、a endscode segmentstart:mov ax,datamov ds,axmov bx,0mov di,0s:cmp byte ptr di,'$'jz endlinc diinc siloop sendl:mov LENGTH,sinopmov ax,4c00hint 21hcode endsend start(2)字類型:assume cs:code,ds:datadata segmentSTRING dw "a","d","g","$"LENGTH db ?data endsco
34、de segmentstart:mov ax,datamov ds,axmov bx,0mov di,0s:cmp word ptr di,'$'jz endlinc diinc diinc siloop sendl:mov LENGTH,sinopmov ax,4c00hint 21hcode endsend start 實驗五 子程序設計實驗(設計性實驗)一、實驗要求和目的1熟悉匯編語言程序設計結構;2熟悉匯編語言子程序設計方法;3熟悉利用匯編語言子程序參數傳遞方法;4熟悉匯編語言字符串處理基本指令的使用方法;5掌握利用匯編語言實現字符串的輸入輸出程序設計方法;6掌握數制轉
35、換程序實現方法。二、軟硬件環境1、硬件環境:計算機系統 windows;2、軟件環境:裝有MASM、DEBUG、LINK、等應用程序。三、實驗涉及的主要知識A) 子程序知識要點:1、 掌握子程序的定義語句;過程名 PROC near/far過程體RET過程名 ENDP2.子程序結構形式一個完整的子程序一般應包含下列內容:1. )子程序的說明部分在設計了程序時,要建立子程序的文檔說明,使用戶能清楚此子程序的功能和調用方法.說明時,應含如下內容:.子程序名:命名時要名中見意.子程序的功能:說明子程序完成的任務;.子程序入口參數:說明子程序運行所需參數及存放位置;.子程序出口參數:說明子程序運行結果
36、的參數及存放位置;.子程序所占用的寄存器和工作單元;.子程序調用示例;2、 )掌握子程序的調用與返回在匯編語言中,子程序的調用用CALL,返回用RET 指令來完成。.段內調用與返回:調用子程序指令與子程序同在一個段內。因此只修改IP;.段間調用與返回:調用子程序與子程序分別在不同的段,因此在返回時,需同時修改CS:IP。3)子程序的現場保護與恢復保護現場:在子程序設計時,CPU 內部寄存器內容的保護和恢復。一般利用堆棧實現現場保護和恢復的格式:過程名PROC NEAR/FARPUSH AXPUSH BX.PUSH DX.POP DX.POP AXRET過程名 ENDP4.子程序的參數傳遞方法1
37、 寄存器傳遞參數這種方式是最基本的參數傳遞方式。2 存儲器單元傳(變量)遞參數這種方法是在主程序調用子程序前,將入口參數存放到約定的存儲單元中;子程序運行時到約定存儲位置讀取參數;子程序執行結束后將結果也放在約定存儲單元中。3 用堆棧傳遞參數利用共享堆棧區,來傳遞參數是重要的的方法之一。B) 字符、字符串輸入輸出知識要點:在實際應用中,經常需要從鍵盤輸入數據并將結果等內容顯示到屏幕上,方便程序控制及查看結果。匯編語言的數據輸入和輸出分成兩類,一是單個字符數據的輸入輸出,一是字符串數據的輸入輸出。都可以通過DOS 功能調用來實現,下面就分別介紹下用來實現數據輸入輸出的功能調用的使用方法。1、單個
38、字符輸入單個字符輸入可以利用DOS 的1 號功能調用來完成,使用方法為:MOV AH,1INT 21H這兩條語句執行后,光標會在屏幕上閃爍,等待輸入數據,輸入的數據以ASCII碼形式存儲在AL 寄存器中。2、單個字符輸出單個字符輸出可利用DOS2 號功能調用來完成,使用方法為:MOV DL,?MOV AH,2INT 21H單個字符輸出需要把要輸出字符的ASCII 碼放在DL 寄存器中。3、字符串輸入從鍵盤輸入一串字符串可以利用DOS 的10 號功能調用來完成,使用方法為:BUF DB 50 ;預定義可以輸入的最大字符個數DB ? ;實際輸入字符個數,根據輸入自動統計DB 50 DUP (?)
39、;存放輸入字符串數據緩沖區LEA DX,BUFMOV AH,10INT 21H4、字符串輸出字符串輸出可由DOS 9 號功能調用來完成,使用方法為:STRING DB HELLO$LEA DX,STRINGMOV AH,9INT 21HC) 表的處理知識要點:表的處理在實際數據處理中應用較為廣泛,主要有排序、搜索、插入和刪除等操作。有一些常用的冒泡法、對分搜索法等需要掌握。四、實驗內容與步驟1、從鍵盤輸入一串字符串(顯示提示)到內存中,在該字符串的某一個指定位置,插入某一字符或刪除某一字符,并顯示操作后的字符串。符串(顯示提示)到內存中,在該字符串的某一個指定位置,插入某一字符或刪除某一字符,
40、并顯示操作后的字符串。程序代碼如下:assume cs:code,ds:datadata segmentbuf db 100buf1 db ? db 101 dup (?)buf0 db 101 dup (?)buf2 db 'a'buf3 db 3buf4 db ?buf5 dw ?data endscode segmentinput proc nearmov ah,0ahint 21hmov dl,10mov ah,2int 21hmov dl,13mov ah,2int 21hmov ah,1 ;先輸字符,再輸位置int 21hmov buf2,almov dl,10mo
41、v ah,2int 21hmov dl,13mov ah,2int 21hmov ah,1int 21hsub al,'0'mov buf3,alretinput endpcharu proc near ;插入函數;lea bx,buf+2mov si,0mov cl,buf3sub cl,2mov ch,0s1:inc siloop s1push siinc siadd si,2mov cl,buf1sub cx,siadd cx,2mov buf4,cllea di,buf0rep movsbpop siadd si,3mov al,buf2mov si,almov di,
42、siinc dilea si,buf0mov cl,buf4rep movsbmov byte ptr di,'$'retcharu endpdelete proc near ;刪除函數;lea bx,buf0mov cl,buf3mov ch,0dec cxmov di,0add di,cxmov si,diinc simov cl,buf1sub cx,siadd si,2add di,2rep movsbmov al,'$'mov di,alretdelete endpoutput proc ;輸出函數mov dl,10mov ah,2int 21hmov
43、 dl,13mov ah,2int 21hlea dx,buf1+1mov ah,9int 21hretoutput endpstart:mov ax,datamov ds,axmov es,axlea dx,bufcall input;call charucall deletecall outputmov ax,4c00hint 21hcode endsend start2、 編寫程序把從鍵盤輸入的四位十六進制數,轉換為十進制形式在屏幕上打印出來。程序代碼如下:DATA SEGMENTBUF DB 5 DB ? DB 5 DUP(?)MINUS DW 10STORE DB 6 DUP(0)P
44、RINT DB 10,13STORE2 DB 5 DUP(0),10,13,'$'MINUS2 DW 2EROR DB 13,10,'INPUT ERROR!$'DATA ENDSCODE SEGMENT ASSUME CS:CODE,ES:DATA,DS:DATAMAIN PROC FAR MOV AX,DATA MOV ES,AX MOV DS,AX R: CALL INPUTCALL CHANGECALL OUTPUTJMP R MOV AX,4C00H INT 21HMAIN ENDPCHANGE PROCMOV AX,WORD PTR BUF+2XCH
45、G AL,AHCMP AH,39HJBE TO5 SUB AH,37H JMP TPTO5: SUB AH,30HTP:CMP AL,39HJBE TO1 SUB AL,37H JMP TP1TO1: SUB AL,30HTP1: MOV CL,4SHL AH,CL OR AH,AL MOV AL,0PUSH AXMOV AX,WORD PTR BUF+4XCHG AL,AHCMP AH,39HJBE TO3 SUB AH,37H JMP TP3TO3 : SUB AH,30HTP3:CMP AL,39HJBE TO4 SUB AL,37H JMP TP4TO4: SUB AL,30HTP4:
46、 MOV CL,4SHL AH,CL OR AL,AH MOV AH,0POP DXOR AX,DX RETCHANGE ENDPINPUT PROC LEA DX,BUF MOV AH,0AH INT 21H ;CALL CHECK RETINPUT ENDP OUTPUT PROC MOV CX,5 LEA BX,STORE2+4AGAIN4: MOV DX,0DIV MINUS MOV BX,DLOR BYTE PTR BX,30H DEC BX LOOP AGAIN4 LEA DX,PRINT MOV AH,9INT 21H RETOUTPUT ENDP ERROR PROC LEA
47、DX,EROR MOV AH,9 INT 21H MOV AX,4C00H INT 21H ERROR ENDPCHECK PROCMOV CL ,BUF+1LEA BX,BUF+2AGAIN3: CMP BYTE PTR BX,41H JB TO CMP BYTE PTR BX,46H JA TOINC BXDEC CL JNZ AGAIN3 JMP TO2TO: CALL ERRORTO2: RETCHECK ENDPCODE ENDS END MAIN 3、從鍵盤輸入(顯示提示)十個2 位十進制數(正數)到內存中,按從小到大排序,然后把該數以十六進制形式在屏幕上打印出來。程序代碼如下:DATA SEGMENTBUF DB 17 DB ? DB 17 DUP(?)MINUS DW 2STORE DB 6 DUP(0)PRINT DB 10,13STORE2 DB 0,0,0,0,10,13,'$
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 11《葡萄溝》教學設計-2024-2025學年統編版二年級語文上冊
- 《自救技能get》主題班會教學設計
- 2024新教材高中地理 第一章 人口與地理環境 第一節 人口分布教學設計 湘教版必修第二冊
- 13 貓 教學設計-2024-2025學年語文四年級下冊統編版
- 2024-2025學年高中物理 第2章 3 勻變速直線運動的位移與時間的關系教學設計 新人教版必修1
- 13《人物描寫一組》 教學設計-2023-2024學年語文五年級下冊統編版
- 肥胖患者的氣道管理
- Unit 1 My school Part B Read and write Part C Story time(教學設計)-2024-2025學年人教PEP版英語四年級下冊
- 2023六年級數學下冊 一 歡樂農家游-百分數(二)信息窗2 青島假日游-百分數實際問題第1課時教學設計 青島版六三制
- Unit 4 Plants around us 單元整體(教學設計)-2024-2025學年人教PEP版(2024)英語三年級上冊
- 護工生活護理及排泄護理
- 2016-2023年山西工程職業學院高職單招(英語/數學/語文)筆試歷年參考題庫含答案解析
- 產房健康宣教幻燈片
- 消防防排煙系統培訓課件
- 股權激勵實戰手冊
- 中國傳統飲食文化-《糯米糍粑》的制作與傳統意義
- 河道整治投標書完整版(技術標)
- 直播電商行業現狀、問題與未來發展策略探討
- YBJ-PS03-2004埋地無壓預制混凝土排水圓形管管基及接口
- 基本醫療保險異地就醫備案個人承諾書【模板】
- 吳俊-血凝學實驗診斷思路(2014檢驗醫師會議)
評論
0/150
提交評論