班級: 031214
學號: 03121370
姓名: 孔玲玲
地點: e-ii-312
時間: 第二批
(1) 掌握組合語言的程式設計方法
(2) 掌握dos功能呼叫的使用方法
(3) 掌握組合語言程式的除錯執行過程
二、實驗裝置
pc機一台。
三、實驗內容
(1) 將指定資料區的字串資料以ascii碼形式顯示在螢幕上,並通過dos功能呼叫完成必要提示資訊的顯示。
(2) 在螢幕上顯示自己的學號姓名資訊。
(3) 迴圈從鍵盤讀入字元並回顯在螢幕上,然後顯示出對應字元的ascii碼,直到輸入「q」或「q」時結束。
(4) 自主設計輸入顯示資訊,完成程式設計與除錯,演示實驗結果。
考核方式:完成實驗內容(1)(2)(3)通過,
完成實驗內容(4)優秀。
實驗中使用的dos功能呼叫: int 21h
表3-1-1 顯示實驗中可使用dos功能呼叫
(1) 執行qthpci軟體,根據實驗內容編寫程式,參考程式流程如圖3-1-1所示。
(2) 使用「專案」選單中的「編譯」或「編譯連線」命令對實驗程式進行編譯、連線。
(3) 「除錯」選單中的「進行除錯」命令進入debug除錯,觀察除錯過程中資料傳輸指令執行後各暫存器及資料區的內容。按f9連續執行。
(4) 更改資料區的資料,考察程式的正確性。
5、實驗程式
data segment
buffer db '03121370konglingling:',0ah,0dh,'$'
buffer2 db 'aabbcc','$'
buffer3 db 0ah,0dh,'$'
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov ah,09h
mov dx,offset buffer
int 21h
mov si,offset buffer2
lab1:
cmp byte ptr [si],'$'
je lab2
mov al,ds:[si]
and al,0f0h取高4位
mov cl,4
shr al,cl
cmp al,0ah是否是a以上的數
jb c2
add al,07h
c2add al,30h
mov dl,alshow character
mov ah,02h
int 21h
mov al,ds:[si]
and al,0fh取低4位
cmp al,0ah
jb c3
add al,07h
c3add al,30h
mov dl,alshow character
mov ah,02h
int 21h
add si,1
jmp lab1
lab2:
mov ah,09h
mov dx,offset buffer3
int 21h
mov ah,01h
int 21h
cmp al,'q'
je lab3
mov bl,al
and al,0f0h取高4位
mov cl,4
shr al,cl
cmp al,0ah是否是a以上的數
jb c4
add al,07h
c4add al,30h
mov dl,alshow character
mov ah,02h
int 21h
mov al,bl
and al,0fh取低4位
cmp al,0ah
jb c5
add al,07h
c5add al,30h
mov dl,alshow character
mov ah,02h
int 21h
jmp lab2
lab3
mov ah,4ch
int 21h
code ends
end start
6、實驗結果
(1) 掌握不同進製數及編碼相互轉換的程式設計方法。
(2) 掌握運算類指令程式設計及除錯方法。
(3) 掌握迴圈程式的設計方法。
二、實驗裝置
pc機一台。
三、實驗內容及說明
(1) 重複從鍵盤輸入不超過5位的十進位制數,按回車鍵結束輸入;
(2) 將該十進位制數轉換成二進位制數;結果以2進製數的形式顯示在螢幕上;
(3) 如果輸入非數字字元,則報告出錯資訊,重新輸入;
(4) 直到輸入「q」或『q』時程式執行結束。
(5) 鍵盤輸入一字串,以空格結束,統計其中數字字元的個數,並在螢幕顯示。
考核方式:完成實驗內容(1)(2)(3)(4)通過,
完成實驗內容(5)優秀。
轉換過程參考流程如圖3-2-2所示。
十進位制數可以表示為:dn*10n+dn-1*10n-1+…+d0*100= di*10i
其中di代表十進位制數1、2、3、…、9、0。
上式可以轉換為: di*10i=(((dn*10+dn-1)*10+ dn-2)*10+…+ d1)*10+ d0
由上式可歸納出十進位制數轉換為二進位制數的方法:從二進位制數的最高位dn開始做乘10加次位的操作。
依此類推,則可求出二進位制數結果。
表3-3-1 數碼轉換對應關係
4、實驗程式
page 60,132
;本實驗將輸入的ascii碼轉換為二進位制,要求輸入位數小於5
data segment
mes db 0ah,0dh,'the ascii code of decimal code are: $'
msg1 db 0ah,0dh,0ah,0dh,0ah,0dh,'please input(exit:q/q):$'
msg2 db 0ah,0dh,'input: $'
msg3 db 0ah,0dh,'input error, please input again!',0ah,0dh,'$'
;bin db 2 dup(0)
buf db 30h,30h,30h,31h,35h
db 10h dup(0)
n dw 0
data ends
code segment
assume cs:code,ds:data
start: mov ax,data
mov ds,ax
mov es,ax
mov di,offset buf
clcmov dx,offset msg1
mov ah,09h顯示字串
int 21h
mov dx,offset msg2
mov ah,09h
int 21h
a1: mov ah,01h接收鍵盤輸入
int 21h
cmp al,'q'
jz exit
cmp al,'q'
jz exit
cmp al,39h
ja error
inc n
stosb將輸入資料存放在buf緩衝區中
cmp al,13
jne a1
mov cx,n
dec cx
mov bx,000ah
mov si,offset buf
mov ah,0
mov dx,0
lodsb
cmp cx,1
je a3
sub al,30h將buf中資料轉換為二——十進位制數
dec cx
a2: imul bx
mov dx,ax
lodsb
mov ah,0
a3: sub al,30h
add ax,dx
loop a2
mov [si],ax
mov dx,offset mes
mov ah,09h
int 21h
微機原理實驗報告
一 實驗綜述 實驗目的 1 熟悉debug環境,在debug中輸入程式。2 掌握基本指令的用法。3 分析程式執行結果。4 會按要求編寫基本程式,完成基本功能。二 實驗過程 實驗步驟 資料記錄 實驗3.57 若ax 1001h,dx 20ffh,當執行add ax,dx指令以後,請列出和數及標誌暫存器...
微機原理實驗報告
實驗報告 課程名稱 實驗名稱 班級姓名學號 實驗組別同實驗者 實驗日期實驗地點 評定成績評閱教師 實驗報告要目 1 實驗目的要求 2 實驗儀器 裝置 3 實驗線路 原理框圖 4 實驗方法步驟 5 實驗的原始資料和分析 6 實驗討論 1 從螢幕輸入20個資料,有效資料從00 99 十進位制 2 按序進...
微機原理綜合實驗報告
濱江學院 實驗報告 學生姓名 學號專業資訊工程 班級2016級 二 一八年十二月三十日 微機原理綜合實驗 實驗一利用debug除錯程式除錯程式段 1 實驗目的 1 熟悉debug有關命令的使用方法。2 利用debug掌握有關指令的功能。3 利用debug執行簡單的程式段。2 實驗內容 1 進入和退出...