通過實驗理解彙編

2021-10-12 19:43:07 字數 1442 閱讀 8825

實驗課題

匯程式設計序實驗實驗

目的掌握匯程式設計序除錯。

分析程式功能。實驗

過程org 0000h //一條彙編偽指令,程式從這裡開始。

ajmp main//程式跳轉到主程式

main://主程式入口

mov sp,#60h//設定堆疊的長度為60h byte

mov a,#0h//將0h立即數送入累加器a

mov r1,#30h//將30h立即數送入暫存器r1

mov r7,#30h //將30h立即數送入暫存器r7

loop1: //迴圈控制指令

mov @r1,a //將a裡的內容傳給暫存器r1 作為r1的位址

inc r1   //將r1內容自加1

djnz r7,loop1 //r7減1不為0時轉到loop1標號處繼續迴圈

nop  //空操作指令,占用乙個機器週期

mov r1,#30h //將30h立即數傳給r1暫存器

mov r7,#10h //將10h立即數傳給r7暫存器

loop: //迴圈控制指令

mov @r1,a //將累加器a裡的內容傳給r1作為r1的位址

inc r1 //將r1的內容自加1

inc a  //將a的內容自加1

djnz r7,loop //r7減1不為0時轉到loop處繼續迴圈

sjmp $ //自迴圈,等待中斷程式

end  //結束實驗

結果

通過對原程式進行除錯,可以看到,通過mov指令,將r1和r7進行賦值操作,在第1個迴圈loop1中暫存器r1和r7在不斷的變化,其中暫存器r1多次自加1,r7多次自減1, 當暫存器r7自減1逐漸減到零時結束迴圈,當跳轉到第2個loop迴圈中,累加器a進行自加1,同時可以看到d:30h位址段中的資料在不斷變化,最終執行到sjmp $,這時不斷的進行,自迴圈等待中斷程式,如果中斷程式執行完了,然後返回來繼續執行,等待另乙個中斷程式。實驗

分析源程式通過兩個迴圈,將累加器和暫存器中的值進行互相傳遞,同時在d30h的位址段中進行顯示加1的過程,通過這次實驗除錯匯程式設計序,觀察執行的情況,對彙編指令有了更深刻的理解,對程式的執行次序順序,有了清晰的認識。實驗

評定備註

彙編實驗(二)

test 和 and 區別在於不改變op1 shr 如果要多移幾次 mov cl,4 shr dl,cl 判斷陣列裡正負數 並分開存放 assume cs code,ds data data segment m db 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17...

彙編實驗(三)

迴圈程式設計 1.如何輸出自定義變數2.21h中斷 1號輸入 2號輸出 乙個字元 data segment man db 0 woman db 0 count equ 10 disp db 0dh,0ah,man or woman 1 0?disp1 db 0dh,0ah,man disp2 db ...

彙編求和實驗

設在a b和d字單元中分別存放著三個數。若三個數都不是0,則求出三個數的和並存放在s單元中 若其中有乙個數為0,則把其他兩個單元也清零。如有錯誤,請各位大神指導!如下 datas segment a dw 1 b dw 2 d dw 6 count dw a 2 tip db the number ...