編寫一個匯編語言程序,完成以下要求。從BUF單元處定義有10個帶符號字數據:-1,3,24,94,62,72,55,0,-48,99,試找出他們中的最大值和平均值,并以此分別存放至該數據區的后兩個單元

編寫一個匯編語言程序,完成以下要求。從BUF單元處定義有10個帶符號字數據:-1,3,24,94,62,72,55,0,-48,99,試找出他們中的最大值和平均值,并以此分別存放至該數據區的后兩個單元中(假設這10個數的和值不超過16位范圍)

P176
4.12

編程思路:首先DATA段中,定義BUF為DW數據類型,因為存在帶符號字數據,N為記錄BUF的數據總個數,MAX為DW數據類型存放最大值,AVE為DB數據類型且占用兩個物理單元,分別存放平均值的整數部分和小數部分;接著,使用SI獲取BUF的有效地址,AX存放以次存放BUF中的數據,并且與下一個數據進行比較大小,若AX小于[SI]則將大的值[SI]賦值給AX,否則進行[SI+2]下一個數據進行與AX比較,AX始終存放BUF數據中的最大值;CX存放數據的總個數,DX依次存放BUF的數據相加之和;最后,將總數據之和/總個數=商(平均分的整數部分)存放在AVE中,余數(平均分的小數部分)存放在AVE+1中。

代碼如下:

DATA	SEGMENT
BUF	DW -1,3,24,94,62,72,55,0,-48,99
N	EQU	($-BUF)/2	;由于定義的BUF為DW字類型,每個數據占兩個物理單元,最后個數除以二,這里的N為BUF的長度
MAX	DW	?			;用于存放BUF中最大的數據值
AVE	DB	?	?		;由于題目規定平均值需要存放在最大值后,定義兩個DB類型,第一個存放商(平均值的整數部分),第二個存放余數(平均值的小數部分)
DATA	ENDS
CODE	SEGMENTASSUME	CS:CODE,DS:DATA
START:	MOV	AX,DATA	;由于DATA為立即數,DS為段寄存器,立即數不能直接給段寄存器賦值,需要引用AX通用寄存器MOV	DS,AX	;通用寄存器賦值給段寄存器LEA	SI,BUF	;LEA取有效地址指令。將源操作數的有效地址送到指令中指定的寄存器中,源操作數只能是存儲器操作數,目的操作數只能是16位的通用寄存器CLC			;標志位操作指令CLC。CF=0,使進位標志位CF清零XOR	AX,AX	;AX清零操作XOR	DX,DX	;DX清零操作MOV	AX,[SI]	;將SI內容賦值給AX,即BUF中的內容,由于AX為16位通用寄存器,且BUF也為DW類型,一個數據占兩個物理單元,即該指令操作是正確合法的MOV	CX,N	;CX為循環次數/BUF存放的數據個數
NEXT:	ADC	DX,[SI]	;由于BUF單元處定義的是帶符號字數據,進行運算的時候需要相加,所以要使用ADC帶進位的加法指令 即DX為所有數相加之后的和 用來存放最后的和的結果CMP	AX,[SI]	;比較AX和[SI]中的大小JGE	GOON	;若AX>=[SI]跳轉大GOON標簽處,否則執行下一條指令 即AXMOV	AX,[SI]	;執行到此條指令表[SI]要比AX大,需要將數值大的[SI]存到AX中,使得AX始終存放最大值
GOON:	ADD	SI,2	;由于BUF為DW數據類型,所以需要SI+2才可以指向下一個數據LOOP NEXT	;CX-1,若CX≠0,跳轉 即接著比較下一個數MOV	MAX,AX	;執行到此指令表示數據已經全部比較完成,最大值存放在AX中MOV	BL,N	;BL為BUF的數據總個數MOV	AX,DX	;將最后的所有數據的和的結果賦值給AXIDIV BL		;IDIV帶符號的除法指令 隱含被除數為AX(存放著所有數的總和) 商為AL 余數為AHMOV	AVE,AL	;將商(平均分的整數部分)賦值給AVEMOV	AVE+1,AH;由于AVE為DB數據類型,下一個存儲單元+1即可,將AH余數(平均分的小數部分)賦值給AVE+1MOV	AH,4CH	;DATA	SEGMENT
string	DB	"Hello World!"	;將需要轉換的字符串存放到string中,定義類型為DB型
LEN EQU $-string			;等值偽指令EQU,將LEN表示string的長度
DATA	ENDS
CODE	SEGMENTASSUME	CS:CODE,DS:DATA
START:	MOV	AX,DATA	;由于DATA為立即數,不能用賦值給段寄存器DS,需要借助AX通用寄存器MOV	DS,AX	;將AX賦值給DSMOV	BX,OFFSET string	;BX獲取string的有效地址用于取出string中的字符串MOV	CL,LEN	;CL為string字符串的長度
NEXT:	MOV	AL,[BX]	;此時[BX]為string所存放字符串的內容,賦值給ALCMP	AL,'a'	;由于是DB字節類型,只需要將AL的一個字節單元與單個字符'a'進行比較JB	LOP		;JB為小于跳轉,即AL存放的字節單元的內容所對應的ASCII碼值小于'a'所對應的ASCII碼值,跳轉到LOP標簽處 否則不跳轉執行下一條指令CMP	AL,'z'	;若執行到此條指令,代表AL>='a',接下來需要與'z'進行比較即可JA	LOP		;JA為大于跳轉,即AL存放的字節單元的內容所對應的ASCII碼值大于'z'所對應的ASCII碼值,跳轉到LOP標簽處 否則不跳轉執行下一條指令  SUB	AL,20H	;執行到此條指令,表示以及確定此時的AL為小寫字母,AL-20H表示將小寫字母轉換為所對應的大寫字母(小寫字母比對應的大寫字母的ASCII碼值大20H)MOV	[BX],AL	;將小寫字母轉換為對應的大寫字母結束后,結果AL存放回原來的物理地址[BX]處
LOP:	INC	BX		;BX+1(因為DB字節類型),表示判斷下一個字節單元存放的字符串DEC	CL		;CL-1,表示字符串string所需要判斷字符的長度減一JNZ	NEXT	;若CL不為0,即字符串string仍有需要判斷的字符,跳轉到NEXT標簽處MOV	AH,4CH	;調用4CH號功能,返回DOS操作系統INT	21H		;終止當前程序的運行,并返回DOS系統
CODE	ENDSEND	START

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/379297.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/379297.shtml
英文地址,請注明出處:http://en.pswp.cn/news/379297.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

prototype 的ajax

原文:http://www.prototypejs.org/learn/introduction-to-ajax]翻 譯:www.ruby-china.cn 站長]Prototype框架提供了非常容易和有意思的方法處理Ajax的調用,同時它也是瀏 覽器安全的 。除了簡單的請求外,這個模塊(指pro…

匯編語言-018(FLD 、FST、FSTP、FCHS、FABS 、浮點運算符、浮點比較 )

1:FLD : FPU(浮點處理器)的加載浮點數到堆棧指令 .386 .model flat,stdcall.stack 4096 ExitProcess PROTO,dwExitCode:DWORD.data array REAL8 10 DUP(?) dblOne REAL8 234.56 dblTwo REAL8 10.1.code main PROCfld array …

mcq 隊列_MCQ | 基礎知識 免費和開源軟件| 套裝4

mcq 隊列Q1. What do you call the technique of storing encrypted user passwords in Linux? Q1。 您如何稱呼在Linux中存儲加密的用戶密碼的技術? System Password Management 系統密碼管理 Shadow Password 影子密碼 Encrypted Password 加密密碼 None of the…

將AX寄存器中的16位數據分成4組(從高到低),每組4位,然后把這4組數作為數當中的低4位分別放在AL,BL,CL,DL中。

將AX寄存器中的16位數據分成4組(從高到低),每組4位,然后把這4組數作為數當中的低4位分別放在AL,BL,CL,DL中。 P176 4.14 編程思路:首先用BX、DX存放AX,即原AX原BX原DX&…

一個很不錯的wp企業站模板

http://zjuhpp.com/chinese-localization-of-business-wordpress-theme-devster.html轉載于:https://www.cnblogs.com/i-kyle/archive/2012/09/13/2683817.html

著名的自由軟件圣戰- “KDE/QT .VS. Gnome/Gtk”

在 Unix 的圖形界面一向是以 MIT 的 X Window 系統為標準, 可是在商業應用上有兩大流派,一派是以 Sun 公司領導的 Openlook 陣營,一派是 IBM/HP 領導的OSF (Open Software Foundation) 的 Motif, 雙方經過多年競爭之后&#xff0c…

匯編語言-019(匯編程序與c\c++相互調用)

1:在C程序中使用__asm塊插入匯編代碼程序(不能用LENGTHOF與SIZEOF運算符,而是LENGTH和SIZE) struct Package {long originZip; //4long destinationzip;//4float shippingPrice; //4 };int main(int argcount,char* args[]) {c…

kotlin 判斷數字_Kotlin程序檢查數字是偶數還是奇數

kotlin 判斷數字Given a number N, we have to check whether it is EVEN or ODD. 給定數字N ,我們必須檢查它是偶數還是奇數 。 Example: 例: Input:N 13Output:"ODD"Input:N 24Output:"EVEN"程序在Kotlin檢查偶數或奇數 (Prog…

微機原理與接口技術(第2版)考點

第一章 1,微型計算機的特點: 功能強、可靠性高價格低廉系統設計靈活,適應性強體積小,重量輕,維護方便 2,微型計算機的硬件組成 微處理器內存儲器I/O接口電路I/O設備系統總線 3,微機的工作過…

搜狗面試筆試一面二面全經歷

09.25 華科西十二教,搜狗招聘筆試: C搜索引擎研發。同時有威盛、烽火兩家筆試,就沒有去。 09.26 華科校內某酒店,搜狗一面: 筆試做的不錯,客觀題錯了3.5(20個),后兩個算法…

UltraEdit語法高亮

語法加亮分支位于配置-編輯器顯示之下,允許用戶配置語法加亮選項:語法加亮可以識別預定詞語,并用不同顏色顯示它們。該功能對于程序員來說尤其有用,并且對那些想用不同顏色顯示文檔中詞語的用戶也非常有用。提供二十種…

線性代數 向量長度_用戶定義長度的向量| 使用Python的線性代數

線性代數 向量長度Prerequisite: Defining a vector 先決條件: 定義向量 Linear algebra is the branch of mathematics concerning linear equations by using vector spaces and through matrices. In other words, a vector is a matrix in n-dimensional space…

順序表(代碼、分析、匯編)

目錄:代碼:分析:匯編:代碼: SeqList.h #ifndef _SEQLIST_H_ #define _SEQLIST_H_ typedef void SeqList; //定義鏈表數據類型,void因為要適用不同鏈表數據類型 typedef void SeqListNode; //定義鏈表節…

設有兩個16位整數變量A和B,試編寫完成下述操作的程序。

設有兩個16位整數變量A和B,試編寫完成下述操作的程序。 (1)若有兩個數中一個是奇數,則將奇數存入A中,偶數存入B中。 (2)若兩個數均為奇數,則兩數分別減1,并存回原變量中…

棋牌游戲服務器架構: 詳細設計(三) 數據庫設計

主要有3類Database: ServerInfoDB,UserInfoDB和GameDB。 ServerInfoDB主要存儲的是游戲列表的信息,UserInfoDB存儲玩家的全局信息,而GameDB就是積分以及積分變化情況。下面分別加以描述。 1. ServerInfoDB ServerInfoDB主要存儲游戲列表信息。主要有以下幾個表: 1. …

程序開發與性格特征

程序開發與性格特征 引言: 程序員給很多人的印象一般是不善于交際、表情嚴肅、思維緊密、做事認真、沉著冷靜等等。那么這些特征到底和程序開發有沒有關系呢?不同性格的人在團隊開發當中將面臨什么樣的問題以及不同性格的人在團隊開發中又將發揮著什么樣…

匯編語言編寫程序從1加到100要求使用循環結構。

匯編語言編寫程序從1加到100要求使用循環結構。 匯編思路:AX用于存放每次累加的結果—>09998…0 首先,DATA段中定義SUM用來存放結果和,STACK段定義一個200DB類型空間,用來存放數據。CODE段,AX清0,CX賦值…

c語言指針++_C ++此指針| 查找輸出程序| 套裝3

c語言指針Program 1: 程序1&#xff1a; #include <iostream>using namespace std;class Test {int VAL;public:Test(int v){VAL v;}Test* Sum(Test T1, Test T2){VAL T1.VAL T2.VAL;return this;}void print(){cout << VAL << " ";}};int mai…

線性表(代碼、分析、匯編)

目錄&#xff1a;代碼&#xff1a;分析&#xff1a;匯編&#xff1a;代碼&#xff1a; LinkList.h #ifndef _LINKLIST_H_ #define _LINKLIST_H_typedef void LinkList; //定義線性表類型 typedef struct _tag_LinkListNode LinkListNode;//定義線性表節點類型 struct _tag_Li…

WPF 操作 richTextBox

FROM:http://blog.csdn.net/wuzhengqing1/article/details/7010902 取出richTextBox里面的內容 第一種方法&#xff1a; 將richTextBox的內容以字符串的形式取出 string xw System.Windows.Markup.XamlWriter.Save(richTextBox.Document); 第二種方法&#xff1a;將richTe…