第七章總結
有了[bx+idata]這種表示記憶體單元的方式,我們就可以用更高階的結構來看待所要處理的資料。我們通過下面的問題來理解這一點。在codesg中填寫程式碼,將datasg中定義的第一個字串轉化為大寫,第二個字串轉化為小寫。人在有一定上下文的情況下看到“1計算機中,所有的資訊都是進位制,而人能理解的資訊是已經123”,就可知道這是一個數值,它的大小為至具有約定意義的字元。看到“BASIC"就知道這是在說BASIC這種程式語言:看到"desk" '就知道說的是桌子。而我們要把這些資訊儲存在計算機中,就要對其進行編碼,將其轉化為進位制資訊進行儲存。而計算機要將這些儲存的資訊再顯示給我們看,就要再對其進行解碼。只要編碼和解碼採用同樣的規則,我們就可以將人能理解的資訊存入到計算機,再從計算機中取出。
世界上有很多編碼方案,有一種方案叫做ASCII編碼,是在計算機系統中通常被採用的。簡單地說,所謂編碼方案,就是一套規則,它約定了用什麼樣的資訊來表示現實物件。比如說,在ASCII編碼方案中,用61H表示“a”,62H表示“b”。 文 本編輯過程中,就包含著按照ASCII編碼規則進行的編碼和解碼。 在文字編輯過程中,我們按一下鍵盤的a鍵,就會在螢幕上看到“a”。這是怎樣一個過程呢?我們按下鍵盤的a鍵,這個按鍵的資訊被送入計算機,計算機用ASCII 碼的規則對其進行編碼,將其轉化為61H儲存在記憶體的指定空間中;文字編輯軟體從記憶體中取出61H,將其送到顯示卡上的視訊記憶體中;工作在文字模式下的顯示卡,用ASCII碼的規則解釋視訊記憶體中的內容,61H被當作字元“a”,顯示卡驅動顯示器,將字元“a”的影象畫在螢幕上。我們可以看到,顯示卡在處理文字資訊的時候,是按照ASCII碼的規則進行的。這也就是說,如果我們要想在顯示器上看到“a”,就要給顯示卡提供“a”的ASCI碼,61H。
在前面,我們用[Bx(si或di)和ox(si或d)ida]的方式來指明一個記憶體單元,我們還可以用更為靈活的方式: [bx+si]和[bx+di]。[bx+si]和[bx+di]的含義相似,我們以[x+si]為例進行講解。
計湖 [bx+si]表示個記憶體單元,它的偏移地址為(bx)+(si)(即bx中的數值加上si中的數值)。現在,我們有了[bx+idata]的方式,就可以用更簡化的方法來完成上面的程式。觀察datasg段中的兩個字串,一個的起始地址為0,另一個的起始地址為5。我們可以將這兩個字串看作兩個陣列,-一個從0地址開始存放,另一個從5開始存放。那麼我們可以用[0+bx]和[5+bx]的方式在同一個迴圈中定位這兩個字串中的字元。在這裡,0和5給定了兩個字串的起始偏移地址,bx中給出了從起始偏移地址開始的相對地址。這兩個字串在記憶體中的起始地址是不一樣的,但是,它們中的每一個字元, 從起始地址開始的相對地址的變化是相同的。