版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 匯編語言與接口技術(shù)習(xí)題解 答(第三章) 作者: 日期: 習(xí)題3.10 問題: 畫圖說明下列語句分配的存儲空間及初始化的數(shù)據(jù)值 解答: (1)byte_var DB ABC,10,10h,EF,3 DUP(-1,?,3 DUP(4) A B C 10 10h E F -1 一 4 4 4 41h 42h 43h OahlOh 45h 46h ffh 04h 04h 04h (2) word_var DW 10h,-5,3 DUP(?) 10h 0 FBh FFh 3個 10h 5 UK 3.16 解: mov ah,1 int 21h sub al,20h mov dl,al mov ah,2
2、 int 21h 3.18 解: done: mov ax, bufX cmp ax, bufY jge done mov ax, bufY mov bufZ, ax 3.19 解: bufX signX .model small .stack .data dw -7 db ? .code .startup cmp bufX,0 只允許輸入小寫字母 轉(zhuǎn)換為大寫字母 顯示 ;test bufX,80h jl n ext;jnz n ext mov signX,0 jmp done n ext: mov signX,-1 done: .exit 0 end 3.20 解: mov dl, 2 mo
3、v ax,bufX cmp ax,bufY je n extl dec dl n extl: cmp ax,bufZ je n ext2 dec dl mov ah,2 int 21h 3.22 編制程序完成 12H 45H 0F3H 6AH 20H 0FEH 90H 0C8H 57H和 34H 等10個字節(jié)數(shù)據(jù)之和,并將結(jié)果存入字節(jié)變量SUM中 (不考慮溢出和進位)。 ; wjxt322.asm .model small .stack .data db 12h,45h,0f3h,6ah,20h,0feh,90h,0c8h,57h,34h equ 10 db ? .code .startup
4、xor si, si xor al, al mov cx, num add al, b_datasi inc si loop aga in mov sum, al .exit 0 end next2: b_data num sum aga in: lucase proc push bx mov bx,offset stri ng cmp al,0 je case0 3.30 解: ;原始數(shù)據(jù) ;數(shù)據(jù)個數(shù) ;預(yù)留結(jié)果單元 ;位移量清零 ;取第一個數(shù) ;累加次數(shù) ;累加 ;指向下一個數(shù) ;如未完,繼續(xù)累加 完了,存結(jié)果 cmp al,1 jz casel cmp al,2 jz case2 jmp
5、 done caseO: cmp byte ptr bx,0 je done cmp byte ptr bx, A jb next0 cmp byte ptr bx, Z ja n ext0 add byte ptr bx,20h n extO: inc bx jmp case0 casel: cmp byte ptr bx,0 je done cmp byte ptr bx, a jb next1 cmp byte ptr bx, z ja n ext1 sub byte ptr bx,20h nextl: inc bx jmp case1 case2: cmp byte ptr bx,0
6、je done cmp byte ptr bx, A jb next2 cmp byte ptr bx, Z ja n ext20 add byte ptr bx,20h jmp n ext2 next20: cmp byte ptr bx, a jb next2 cmp byte ptr bx, z ja n ext2 sub byte ptr bx,20h n ext2: inc bx jmp case2 done: pop bx ret lucase endp 習(xí)題3.1解答:參考教材(第 60頁) 習(xí)題3.6 問題: 給出你采用一個源程序格式書寫的例題3.1源程序 解答: .model
7、 small .stack .data stri ng db Hello, Assembly ! ,Odh,Oah, $ .code start: mov ax,data mov ds,ax mov dx,offset stri ng mov ah,9 int 21h mov ax,4c00h int 21h end start 習(xí)題3.12解答:ORG偽指令 習(xí)題3.13解答:段地址和偏移地址屬性,類型屬性 習(xí)題3.26 問題: 過程定義的一般格式是怎樣的?子程序開始為什么常有PUSH指令、返回前為什么 常有POP指令?下面完成16位無符號數(shù)累加的子程序有什么不妥嗎?若有,請改 正: 解答:
8、 crazy PROC ; crazy PROC push ax ; xor ax,ax ; xor ax,ax xor dx,dx ;xor dx,dx aga in: add ax,bx ;again: add ax,bx adc dx,0 ; adc dx,0 inc bx; inc bx inc bx; inc bx loop aga in ; loop aga in ret ; ret ENDP crazy ; crazy ENDP 字量求和子程序 入口參數(shù): BX =數(shù)據(jù)首址 CX =數(shù)據(jù)個數(shù) 出口參數(shù): AX =和的低字 DX =和的高字 (進位部分) 習(xí)題3.28 問題: 請按
9、如下說明編寫子程序: ;子程序功能:把用 ASCII碼表示的兩位十進制數(shù)轉(zhuǎn)換為對應(yīng)二進制數(shù) ;入口參數(shù):DH =十位數(shù)的 ASCII碼,DL =個位數(shù)的 ASCII碼 ;出口參數(shù):AL =對應(yīng)的二進制數(shù) 解答: asctob proc push ex ;先轉(zhuǎn)換十位數(shù) and dh,0fh shl dh,1 ;乘以 10 mov ch,dh shl dh,1 shl dh,1 add dh,ch ;轉(zhuǎn)換個位數(shù) and dl,0fh ;十位數(shù)加個位數(shù) add dh,dl ;設(shè)置出口參數(shù) mov al,dh pop ex ret asctob endp習(xí)題3.34 1 問題: 編寫一個計算字節(jié)校驗和
10、的子程序。所謂校驗和”是指不記進位的累加,常用于檢 查信息的正確性。主程序提供入口參數(shù),有數(shù)據(jù)個數(shù)和數(shù)據(jù)緩沖區(qū)的首地址。子程 序回送求和結(jié)果這個出口參數(shù)。傳遞參數(shù)方法自定。 解答:;數(shù)據(jù)段 array db 12h,25h,0f0h,0a3h,3,68h,71h,0cah,0ffh,90h countequ $-array;數(shù)組元素個數(shù) resultdb ?;校驗和 ;代碼段(主程序) mov bx,offset array ; BX J數(shù)組的偏移地址 mov cx,count ; CX J數(shù)組的元素個數(shù) call checksum ;調(diào)用求和過程 mov result,al ;處理出口參數(shù)
11、習(xí)題3.34 2 ;代碼段(子程序) ;計算字節(jié)校驗和的通用過程 ;入口參數(shù):DS:BX =數(shù)組的段地址:偏移地址 CX =元素個數(shù) ;出口參數(shù):AL =校驗和 ;說明:除AX/BX/CX夕卜,不影響其他寄存器 checksum proc xor al,al ;累加器清0 sum:add al,bx ;求禾口 inc bx;指向下一個字節(jié) loop sum ret checksum endp 習(xí)題3.17 已知用于LED數(shù)碼管的顯示代碼表為: LEDtabledb 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h db 80h,90h,88h,83h,0c6h,0c1h
12、,86h,8eh 它依次表示09、AF這16個數(shù)碼的顯示代碼?,F(xiàn)編寫一個程序?qū)崿F(xiàn)將led num中 的一個數(shù)字(09、AF)轉(zhuǎn)換成對應(yīng)的 LED顯示代碼。 解答 ;數(shù)據(jù)段 LEDtable db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h db 80h,90h,88h,83h,0c6h,0clh,86h,8eh led num db 0ah ;代碼段 mov bx, offset LEDtable mov al, led num xlat; al中存有對應(yīng)的 LED 顯示代碼 習(xí)題3.21 例題3.7中,如果要實現(xiàn)所有為 1的位都順序執(zhí)行相應(yīng)的處理程序段(而不是例
13、題中僅 執(zhí)行最低為1位的處理程序段),請寫出修改后的代碼段。 解答 ;代碼段 mov al, nu mber mov bx,0 ;BX J記錄為1的位數(shù) restart: cmp al,0 ;AL = 0 結(jié)束 jz do ne aga in: shr al,1;最低位右移進入 CF jc next ;為1,轉(zhuǎn)移 inc bx;不為1,繼續(xù) jmp aga in n ext: push ax push bx shl bx,1 ;位數(shù)乘以2 (偏移地址要用 2個字節(jié)單兀) jmp addrsbx;間接轉(zhuǎn)移:IP J table + BX ;以下是各個處理程序段 fun 0: mov dl,0 j
14、mp disp fun 1: mov dl,1 jmp disp fun 2: mov dl,2 jmp disp fun 3: mov dl,3 jmp disp fun4: mov dl,4 jmp disp fun5: mov dl,5 jmp disp fun 6: mov dl,6 jmp disp fun7: mov dl,7 jmp disp disp: mov ah,2 ;顯示一個字符 int 21h pop bx pop ax jmp restart done: 習(xí)題3.24 編寫計算課100個正整數(shù)之和的程序。如果和不超過16位字的范圍(65535),則保存 其和到word
15、sum,如超過則顯示Overflow !。 解答 ;數(shù)據(jù)段 cou nt parray equ 100 dw count dup;假設(shè)有100個數(shù)據(jù) wordsum dw 0 msg db overflow ;代碼段 mov cx,co unt mov ax,0 mov bx,offset parray aga in: add ax,bx jnc n ext mov dx,offset msg mov ah,9 int 21h;顯示溢出信息 jmp done;然后,跳出循環(huán)體 n ext: add bx,2 loop aga in mov wordsum,ax done: 習(xí)題3.25 編程把
16、一個16位無符號二進制數(shù)轉(zhuǎn)換成為用 8421BCD碼表示的5位十進制數(shù)。轉(zhuǎn)換 算法可以是:用二進制數(shù)除以 10000,商為“萬位”,再用余數(shù)除以 1000,得到“千位”; 依次用余數(shù)除以100、10和1,得到“百位”、“十位”和“個位”。 解答 ;wjxt325.asm .model small .stack 256 .data array dbcd dw ?;源字數(shù)據(jù) db 5 dup(?);五位bcd結(jié)果,高對高低對低 .code .startup mov dx, array;取源數(shù)據(jù)(余數(shù)) mov bx, 10000;除數(shù) mov cx, 10;除數(shù)系數(shù) mov si, 4 ;目的數(shù)據(jù)
17、咼位位移量 aga in: mov ax, dx; dx.ax中存放被除數(shù) mov dx, 0 div bx;除于bx,商ax,余數(shù)dx mov dbcdsi, al ;商 10,存結(jié)果 push dx ;暫存余數(shù) mov ax, bx;除數(shù)除于10 mov dx,0 div cx ; dx.ax除于cx,商ax、余數(shù)0存在dx mov bx, ax ; bx 是除數(shù) pop dx dec si ;目的數(shù)據(jù)位移量減 1 jnz aga in mov dbcd, dl ;存?zhèn)€位數(shù)( 10 ) .exit 0 end 習(xí)題3.27 編寫一個源程序,在鍵盤上按一個鍵,將從AL返回的ASCII碼值顯示
18、出來,如果按 下ESC鍵則程序退出。請調(diào)用書中的 HTOASC子程序。 解答 aga in:mov ah,1 int 21h cmp al,1bh ; ESC 的 ASCII 碼是 1bh je do ne call htoasc mov ah,2 int 21h jmp aga in done: 習(xí)題3.29 調(diào)用HTOASC子程序,編寫顯示一個字節(jié)的16進制數(shù)、后跟“ H ”的子程序。 解答 DIPASC proc ;入口參數(shù):AL =要顯示的一個 16進制數(shù) push cx push dx push ax mov cl,4 ;轉(zhuǎn)換高位 shr al,cl call HTOASC mov
19、dl,al ;顯示 mov ah,2 int 21h pop ax ;轉(zhuǎn)換低位 call HTOASC mov dl,al ;顯示 mov ah,2 int 21h mov dl, H;顯示一個字母“ H ” mov ah,2 int 21h pop dx pop ex ret DIPASC endp HTOASCproe ;將AL低4位表達的一位16進制數(shù)轉(zhuǎn)換為 ASCII碼 and al,Ofh emp al,9 jbe htoasel add al,37h ;是 OAH 0FH,力口 37H 轉(zhuǎn)換為 ASCII 碼 ret ;子程序返回 htoasel: add al,30h ;是 09
20、,力口 30H 轉(zhuǎn)換為 ASCII 碼 ret ;子程序返回 HTOASCen dp 習(xí)題3.35 編制3個子程序把一個16位二進制數(shù)用4位16進制形式在屏幕上顯示出來,分別運 用如下3種參數(shù)傳遞方法,并配合 3個主程序驗證它。 采用AX寄存器傳遞這個16位二進制數(shù) 采用temp變量傳遞這個16位二進制數(shù) 采用堆棧方法傳遞這個16位二進制數(shù) 解答 .model small .staek .data wdata dw 34abh .eode .startup mov ax,wdata eall dispa .exit 0 5 dispa proe push ex push dx mov el,4
21、 mov dl,ah shr dl,el eall dldisp mov dl,ah and dl,Ofh eall dldisp mov dl,al. shr dl,cl call dldisp mov dl,al and dl,0fh call dldisp pop dx pop cx ret dispa en dp dldisp 5 proc push ax or dl,30h cmp dl,39h jbe dldispl add dl,7 dldisp1: mov ah,2 int 21h pop ax ret dldisp en dp end .model small .stack .data wdata dw 34abh wordtemp dw ? .code .startup mov ax,wdata mov wordtemp,ax call dispa .exit 0 5 dispa proc push cx push dx mov cl,4 mov dl,byte ptr wordtemp+1 shr dl,cl call dldisp mov dl,byte ptr wordtemp+1 and dl,O
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025石材長期采購合同
- 2025年度國防科技產(chǎn)業(yè)核心秘密保護合同3篇
- 2025年度遠程教育兼職教師聘任合同3篇
- 2025年度農(nóng)村房屋買賣合同協(xié)議書(含農(nóng)村電商合作)2篇
- 2025年度公司公務(wù)車借用及維修保養(yǎng)協(xié)議范本3篇
- 二零二五年度企業(yè)核心高管聘用合同:企業(yè)戰(zhàn)略轉(zhuǎn)型升級合作協(xié)議3篇
- 2025農(nóng)村宅基地置換項目宅基地置換補償評估協(xié)議
- 2025年度婚姻財產(chǎn)保全與風(fēng)險評估協(xié)議3篇
- 二零二五年度老舊小區(qū)電梯加裝工程合同3篇
- 二零二五年度特色農(nóng)業(yè)機械租賃合作框架協(xié)議2篇
- 貨運安全生產(chǎn)管理制度
- 施工圖審查招標(biāo)文件范文
- 幼兒園中班體育《我們愛運動》+課件
- 郭錫良《古代漢語》課件
- 外研版四年級英語下冊(一年級起點)全冊完整課件
- MF47萬用表組裝與檢測教學(xué)教案
- 防止電力生產(chǎn)事故的-二十五項重點要求(2023版)
- 教研室主任崗位申請書
- 職業(yè)培訓(xùn)師的8堂私房課:修訂升級版
- 改擴建工程施工圖設(shè)計說明
- 壯族文化的靈魂廣西花山巖畫
評論
0/150
提交評論