【微機原理】實驗一 多位十六進制加法運算實驗

一. 實驗要求

利用Proteus平臺,建立8086的多位十六進制加法運算的例子。

二. 實驗目的

  1. 熟悉實驗系統的編程和使用。
  2. 掌握使用加法類運算指令編程及調試方法。
  3. 掌握加法類指令對狀態標誌位的影響。

三. 實驗說明

由於本實驗是三個十六位二進制數相加運算,N4爲存放結果,其中N1爲1111H,N2爲2222H,N3爲3333H,所以結果應該爲6666H。

四. 實驗程序流程圖

Created with Raphaël 2.2.0初始化段寄存器將1111H移入AX調用兩次ADD,實現1111H+2222H=3333H,3333H+3333H=6666H將AX內的結果移入內存空白處

五. 實驗步驟

a.仿真代碼

;N4=N1+N2+N3 =1111H+2222H+3333H=6666H 
CODE SEGMENT;表示代碼段開始
ASSUME CS:CODE,DS:DATA;CODE對應代碼段寄存器,DATA對應數據段寄存器
BEG: 	;必要的,作爲程序入口
	MOV AX,DATA;
    MOV DS,AX;藉助AX間接將DATA段地址賦值給DS,因爲段寄存器只接受通用寄存器數據作爲源操作數
    MOV SI,OFFSET NUM1;將NUM1的偏移地址賦值給SI,以便之後間接尋址
    MOV AX,0;將AX清零用來存儲加法結果
    ADD AX,[SI+0];將1111H移入AX
    ADD AX,[SI+2];1111H+2222H=3333H
    ADD AX,[SI+4];3333H+3333H=6666H
    MOV [SI+6],AX;將結果存到空餘位置
	JMP $;暫停程序
CODE ENDS;表示代碼段結束
DATA SEGMENT;數據段,存儲各數據
    NUM1 DW 1111H ;N1
    NUM2 DW 2222H ;N2
    NUM3 DW 3333H ;N3
    NUM4 DW 0000H ;N4
DATA ENDS
END BEG

b.調試、驗證

在剛運行程序時的內存可以分辨出前面是代碼段,隔着四個字的空白內存後是數據段。數據段中可以直接看到1111H、2222H、3333H這三個數據。注意到數據段地址由0020H開始
在這裏插入圖片描述

然後把數據段地址賦給了DS。可以看到DS的值爲0002H.乘以十即爲真實的段地址。這是因爲
=10 物理地址=段地址*10
在這裏插入圖片描述
將1111H移入AX寄存器
在這裏插入圖片描述
對AX加上2222H

[外鏈圖片轉存失敗(img-fYkoS88O-1569058850936)(1-04.PNG)]

對AX加上3333H,計算環節結束。

在這裏插入圖片描述

六. 實驗結果和體會

實驗結果展示:最後在內存中便存儲了計算結果,爲6666H。

[外鏈圖片轉存失敗(img-F7zFOd4Y-1569058850936)(1-06.PNG)]

從這個流程中可以意識到一些彙編編程的思想。待數據往往事先存入數據段中,需要計算時才使用MOV語句移入通用寄存器,結果再寫入內存。由於通用寄存器數量有限(4個),且部分寄存器在某些語句上有專門用途(如MUL語句必須用AX)。不可一次將太多數據存入寄存器,因此往往需要進行內存的讀取與寫入。該點是與使用高級語言進行編程時,對編程者來說不一樣的地方。

此外數據段與代碼段在代碼中的先後順序無關緊要。且在內存中,數據段和代碼段之間還有4個字的空白空間。

七. 擴展題目程序和實驗結果

;N4=N1+N2+N3 =11H+22H+33H=66H 
CODE SEGMENT;代碼段
ASSUME CS:CODE,DS:DATA;CODE對應代碼段寄存器,DATA對應數據段寄存器
BEG: 	MOV AX,DATA
	MOV DS,AX;藉助AX間接將DATA段地址賦值給DS,因爲段寄存器只接受通用寄存器數據作爲源操作數
	MOV SI,OFFSET NUM1;將NUM1的偏移地址移入SI以便訪問
        MOV AL,0;初始化AL,該句及下一句可化簡成MOV AL,[SI+0]
        ADD AL,[SI+0];加上第一個數
        ADD AL,[SI+1];加上第二個數
        ADD AL,[SI+2];加上第三個數   
        MOV [SI+3],AL;將AL中的結果存入內存
	JMP $;程序暫停
CODE ENDS
DATA SEGMENT
NUM1 DB 11H ;N1。由於是8位數據,使用字節保存
NUM2 DB 22H ;N2
NUM3 DB 33H ;N3
NUM4 DB 00H ;N4
DATA ENDS
	END BEG

結果圖片展示:

可以看到AX及內存中存儲了計算結果66H

[外鏈圖片轉存失敗(img-jCX00gHK-1569058850938)(1-11.PNG)]

[外鏈圖片轉存失敗(img-HjXvlRlj-1569058850938)(1-10.PNG)]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章