日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

编写一个汇编语言程序,完成以下要求。从BUF单元处定义有10个带符号字数据:-1,3,24,94,62,72,55,0,-48,99,试找出他们中的最大值和平均值,并以此分别存放至该数据区的后两个单元

發(fā)布時(shí)間:2023/12/1 编程问答 45 豆豆

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

P176
4.12

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

代碼如下:

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

總結(jié)

以上是生活随笔為你收集整理的编写一个汇编语言程序,完成以下要求。从BUF单元处定义有10个带符号字数据:-1,3,24,94,62,72,55,0,-48,99,试找出他们中的最大值和平均值,并以此分别存放至该数据区的后两个单元的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。