日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

汇编语言随笔(7)-访问内存的寻址方式和实验7(不同寻址方式的使用)

發(fā)布時間:2025/6/17 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 汇编语言随笔(7)-访问内存的寻址方式和实验7(不同寻址方式的使用) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

尋址方式小結(jié):

尋址方式含義名稱常用格式示例
[idata]EA=idata,SA=(ds)直接尋址[idata]
[bx],[si],[di]EA=(bx)或(si)或(di),SA=(ds)寄存器間接尋址[bx]
[bp]EA=(bp),SA=(ss)寄存器間接尋址[bp]
[bx+idata],[si+idata],[di+idata]EA=(bx)+idata或(si)+idata或(di)+idata,SA=(ds)寄存器相對尋址[bx+10]
[bp+idata]EA=(bp)+idata,SA=(ss)寄存器相對尋址[bp+10]
[bx+si],[bx+di]EA=(bx)+(si)或(bx)+(di),SA=(ds)基址變址尋址[bx+si]
[bp+si],[bp+di]EA=(bp)+(si)或(bp)+(di),SA=(ss)基址變址尋址[bp+si]
[bx+si+idata],[bx+di+idata]EA=(bx)+(si)+idata或(bx)+(di)+idata,SA=(ds)相對基址變址尋址[bx+si+10]
[bp+si+idata],[bp+di+idata]EA=(bp)+(si)+idata或(bp)+(di)+idata,SA=(ss)相對基址變址尋址[bp+si+10]

關(guān)于處理數(shù)據(jù)的長度

??????1,通過寄存器來指明要處理數(shù)據(jù)的尺寸。如mov ax,[bx]和mov al,[bx]分別針對的是內(nèi)存中的字節(jié)單元和字型數(shù)據(jù)。
??????2,在沒有寄存器的情況下,可以用 數(shù)據(jù)長度 ptr 的格式來指明,其中數(shù)據(jù)長度可以為byte或word,分別表示字節(jié)和字。如下面幾種操作表示操作的是字型數(shù)據(jù):
????????????mov word ptr ds:[0],1??????可將數(shù)據(jù)直接傳送到字型內(nèi)存單元。
????????????inc word ptr ds:[0]
????????????add word ptr [bx],1
??????對字節(jié)單元的數(shù)據(jù)采用 byte ptr。
??????3,在push和pop中不需要指明內(nèi)存單元的長度,因為只能是字型數(shù)據(jù)。如:push ds:[0]

實驗7

??????將data段中21年的數(shù)據(jù)按照填入table表中,其中人均收入需要計算。table表一共21行,每一行共計16字節(jié),格式如下:

年份(4字節(jié))空格收入(4字節(jié))空格雇員數(shù)(4字節(jié))空格人均收入(2字節(jié))空格

??????程序如下:

assume cs:codedata segamentdb '1975','1976','1977','1978','1979','1980','1981','1982','1983'db '1984','1985','1986','1987','1988','1989','1990','1991','1992'db '1993','1994','1995'//用21個字符串來表示年份dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514dd 245980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000//用21個雙字型數(shù)據(jù)來表示公司每年的總收入dw 3,7,9,13,28,38,130,220,476,778,100,1442,2258,2793,4037,5635,8226dw 11542,14430,15257,17800//用21個字型數(shù)據(jù)來表示公司每年的員工數(shù)量data endstable segmentdb 21 dup('year summ ne ?? ')table endscode segmentstart:mov ax,datamov ds,ax 用ds來存放數(shù)據(jù)段的段地址mov ax,tablemov es,ax 用es來存放table段的段地址mov di,0 di保存table中每一行的初始地址mov bx,0 bx表示數(shù)據(jù)段起始的偏移地址。mov al,21mov dl,8mul dlmov si,ax 計算21*8的字節(jié)數(shù),保存到si,這是雇員數(shù)在數(shù)據(jù)段的起始偏移地址mov cx,21 外層循環(huán)次數(shù)21次s: mov ax,[bx]mov es:[di],axmov ax,[bx+2]mov es:[di+2],axmov ax,[bx+84] bx+84為總收入的偏移地址mov es:[di+5],axmov ax,[bx+86]mov es:[di+7],axmov ax,[si]mov es:[di+10],axmov dx,[bx+86]mov ax,[bx+84]div word ptr [si] 計算人均收入mov es:[di+13],axadd di,10hadd si,2add bx,4loop smov ax,4c00hint 21hcode endsend start

??????注明:空格已經(jīng)在table段給出,故沒必要在程序在設(shè)置空格符了。關(guān)于用ax作為周轉(zhuǎn)寄存器執(zhí)行從內(nèi)存到內(nèi)存的數(shù)據(jù)傳送,建議可以用棧來代替。關(guān)于乘除法的運算規(guī)則可以參考https://blog.csdn.net/Little_ant_/article/details/108149575

總結(jié)

以上是生活随笔為你收集整理的汇编语言随笔(7)-访问内存的寻址方式和实验7(不同寻址方式的使用)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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