1. 程式人生 > >王爽組合語言課程設計1

王爽組合語言課程設計1

;===============================================================================

;課程設計1

;將實驗7中的power idea公司的資料按照格式在螢幕上顯示.

;===============================================================================

ASSUMECS:CODE,DS:DATA

;-------------------------------------------------------------------------------

DATA SEGMENT

;年份

YEAR DB'1975','1976','1977','1978','1979','1980','1981','1982','1983'

DB'1984','1985','1986','1987','1988','1989','1990','1991','1992'

DB'1993','1994','1995'

;年收入

INCOME DD16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514

DD345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000

;

僱員人數

EMPLOYEE_NUM DW3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226

DW11542,14430,15257,17800

AVERAGE DW21DUP(0)

TABLE DB21DUP('YEAR',0)

;字串的長度為25H(包括結尾符)

DATA ENDS

;--------------------------------------------------------------------------------

;--------------------------------------------------------------------------------

CODE SEGMENT

START:

MOVAX,DATA;初始化DS

MOVDS,AX

;輸出年份的字串到資料表各年字串的年份段

MOVCX,21;迴圈次數=21,21組資料

MOVBX,0;年份的起始偏移地址

MOVSI,OFFSET TABLE;輸出資料的表的起始偏移地址

STORE_ALL_YEAR:;儲存所有的年份

PUSHCX;壓入外層迴圈次數

MOVCX,4;年份有4個字元,迴圈次數為4

STORE_ONE_YEAR:;儲存一年的年份

MOVAL,[BX];字元轉移到AL

MOV[SI],AL;AL中的字元轉移到表

INCBX;BX+1,準備讀取下一個字元

INCSI;SI+1,準備寫入下一個字元

LOOP STORE_ONE_YEAR;寫入下一個字元

ADDSI,21H;定位到下一年份的起始偏移地址

POPCX;恢復外層迴圈次數

LOOP STORE_ALL_YEAR;準備寫入下一年份的資料

;轉換收入為字串並輸出到資料表各年字串的收入段

MOVCX,21;迴圈次數=21,21組資料

MOVSI,OFFSET TABLE;輸出資料的表的起始偏移地址

ADDSI,10;指向第一組資料的收入那一項的偏移地址

STORE_ALL_INCOME:;儲存所有年份的收入

PUSHSI;儲存當前字串收入項記憶體單元的偏移地址

MOVAX,[BX];16

ADDBX,2;16

MOVDX,[BX]

CALL DTOC;轉化為字串

CALL NEXT_STRING;SI指向下一個字串收入項記憶體單元的偏移地址

DECSI;SI指向收入項字串的結尾符0

MOVBYTEPTR[SI],' ';替換為空格

POPSI;恢復為當前字串收入項記憶體單元的偏移地址

ADDBX,2;準備讀取下一年份的收入

ADDSI,25H;SI指向資料表中下一年份收入那一項的偏移地址

LOOP STORE_ALL_INCOME;儲存下一年份的收入資料

;轉換僱員數為字串並輸出到資料表各年字串的僱員數段

MOVCX,21;迴圈次數=21,21組資料

MOVSI,OFFSET TABLE ;輸出資料的表的起始偏移地址

ADDSI,20;指向第一組資料的僱員數那一項的偏移地址

STORE_ALL_EMPLOYEE_NUM:;儲存所有年份的僱員數

PUSHSI;儲存當前字串僱員數項記憶體單元的偏移地址

MOVAX,[BX];16,(AX)=僱員數

MOVDX,0;16位置零

CALL DTOC ;轉化為字串

CALL NEXT_STRING;SI指向下一個字串僱員數項記憶體單元的偏移地址

DECSI;SI指向僱員數項字串的結尾符0

MOVBYTEPTR[SI],' ';替換為空格

POPSI;恢復當前字串僱員數項記憶體單元的偏移地址

ADDBX,2;準備讀取下一年份的僱員數

ADDSI,25H;SI指向資料表中下一年份僱員數那一項的偏移地址

LOOP

相關推薦

組合語言課程設計1

;=============================================================================== ;課程設計1 ;將實驗7中的po

組合語言 課程設計1

將實驗7的資料顯示在螢幕上: 分析:先將 data 中的資料轉換成字串後儲存在 table 中再顯示,按行顯示 遇到的問題:loop迴圈中的程式程式碼太長,loop對IP的修改範圍(-128~127Bytes),導致編譯無法通過,所以將loop換成以下語句 m_loop

.彙編.第三版.課程設計1.答案

日期:2017年7月3日 課程設計 1 任務:將實驗7中的Power idea公司的資料按照下圖所示的格式在螢幕上顯示出來 版本:beta 0.1 1、有時間再排版吧。都是用的第10章之前的指令。沒有優化程式碼 2、設計思路,為了簡單使用的是實

組合語言(第3版) 第10章相關內容及實驗10和課程設計1

第十章 CALL和RET指令 文章目錄 第十章 CALL和RET指令 章節內容 概述 ret/retf call ret和call配合

組合語言:編寫子程式(下)課程設計1

題目: 彙編程式碼: assume cs:codesg data segment db '1975','1976','1977','1978','1979','1980','1981','1982','1983' db '1984','1985','1986','

最強大的組合語言學習環境使用教程

  最強大的王爽組合語言學習環境使用教程 一、前言   這是採用VMwere Workstation 12 pro虛擬機器軟體,搭建的MS-DOS學習環境,在windowsXP/8/10及linux中均可以使用,在這個環境中,我集成了CCDOS中文系統,pdos中文系統,使

組合語言綜合研究-函式如何接收不定數量的引數

1、c語言如何傳遞引數 編寫這樣一個程式試驗 void showchar(char a,int b); main() { showchar('a',2); } void showchar(char a,int b) { *(char far *)(0xb8000000 + 160*10 + 80

windows10中最強大組合語言學習環境

一、前言   這是採用VMwere Workstation12 pro虛擬機器軟體,搭建的MS-DOS學習環境,在windowsXP/8/10及linux中均可以使用,在這個環境中,我集成了CCDOS中文系統,pdos中文系統,使用這些系統,可以進行中文輸入與顯示。還集成

組合語言 實驗7 定址方式在結構化資料訪問中的應用,用棧實現

assume cs:codesg data segment db '1975','1976','1977','1978','1979','1980','1981','1982','1983' db

-組合語言第三版實驗7

;1. 資料組織 data 中資料當成陣列,table中資料當成結構體。 ;2. data 用si來定址, table 用 bx , di, idata來定址 assume cs:codesg , ss:stacksg data segment    db '1975','1976','1977','1978

組合語言 第二版 實驗七 定址方式在結構化資料訪問中的使用 原始碼

這是學習彙編以來遇到的最繁瑣的一個程式,其實思路理清了也就是那麼回事,但還是花了一整個晚上才把它寫出來,晒晒 assume cs:code data segment db '1975','1976','1977','1978','1979','1980','1981

組合語言(第3版)( 著)》學習筆記一:基礎知識(1

組合語言是直接在硬體之上工作的程式語言,我們首先要了解硬體系統的結構,才能有效地應用匯編語言對其程式設計。 彙編課程的研究重點放在如何利用硬體系統的程式設計結構和指令集有效靈活地控制系統進行工作。

.彙編.第三版.課程設計2

讀完王爽彙編第三版的精簡版的作業系統,對沒有錯,就是作業系統 需要注意的是: 0、多謝:http://www.cnblogs.com/S-E-P/archive/2010/04/06/2045067.html的程式碼。 1、將程式碼拷貝到軟盤,然後再從軟盤

組合語言】(著第三版)實驗二

實驗二 實驗任務(一) 實驗前要求我們將書本P74的程式段按理論分析,將結果進行填空。之後用Debug,將該程式段寫入記憶體,逐條執行之後, 根據指令執行後的實際執行的結果填空如下。   mov ax,0021   mov  ax , ffff   &n

嵌入式課程設計日誌1

姓名:楊青 日期:2018.09.10 今日學習任務: 安裝軟體,熟悉嵌入式開發環境、複習C語言的知識 問題彙總:很多C語言方面的知識已遺忘、語法編譯不熟練 今日開發中出現的問題彙總: 之前學的c語言的一些命令不記得了,且C語言知識概

組合語言第三版》學習歷程——實驗16

編寫包含多個功能子程式的中斷例程 要求: 安裝一個新的int 7ch中斷例程,為顯示輸出提供如下功能: (1)、清屏; (2)、設定前景色; (3)、設定背景色; (4)、向上滾動一行; 入口引數說明如下。 (1)、用ah暫存器傳遞功能號:0表示

組合語言(第三版)》筆記(3)

第三章 暫存器(記憶體訪問) 使用0、1記憶體單元存放資料0420H, 則低地址單元0存放低位位元組20,高地址單元存放高位位元組04。 字單元:即存放一個字型資料(16位)的記憶體單元,由兩個地址連續的記憶體單元組成,高地址存放高位位元組,低地址存放低位位元組

組合語言(第3版)( 著)》學習筆記二:基礎知識(2)

1.7 CPU 對儲存器的讀寫 以上講到,儲存器被劃分成多個儲存單元,儲存單元從零開始編號。這些編號可以看作儲存單元在儲存器中的地址。就想一條街,每個房子都有門牌號碼。 CPU 要從記憶體中讀資料,

組合語言(第3版)( 著)》學習筆記三:基礎知識(3)

1.11 記憶體地址空間(概述) 什麼是記憶體地址空間呢?舉例來講,一個 CPU 的地址匯流排寬度為 10,那麼可以定址 1024 個記憶體單元,這 1024 個可尋到的記憶體單元就構成這個 CPU

《計算機演算法設計與分析 第4版 (曉東) 課後答案[1-9章]》pdf版電子書附下載連結+30個總結JVM虛擬機器的技術文排版好(收藏版)

技術書閱讀方法論 一.速讀一遍(最好在1~2天內完成) 人的大腦記憶力有限,在一天內快速看完一本書會在大腦裡留下深刻印象,對於之後複習以及總結都會有特別好的作用。 對於每一章的知識,先閱讀標題,弄懂大概講的是什麼主題,再去快速看一遍,不懂也沒有關係,但是一定要在不懂的