将某内存单元数据做乘法 + 内存间数据的复制
計算ffff:0006單元中的數,乘以三,并將結果儲存在ds中
分析:
(1)運算后的結果是否會超出dx所能存儲的范圍?
ffff:0006單元的數是一個字節型數據,范圍在0~ffh,乘以3結果不會大于64kb,可以在dx中存放下。
(2)用循環累加實現乘法,用哪個寄存器累加?
將ffff:0006單元的數賦值給ax,用dx進行累加。先設dx=0,然后累加三次
(3)ffff:6單元是一個字節單元,ax是一個十六位寄存器,數據的長度不一樣,如何賦值?
設ffff:0006單元中的數據是XXH,若要ax中的值(數據的大小)和ffff:0006單元中的相等,ax中的數據應該為00XXH。所以,若實現ffff:0006向ax賦值,應該令ah=0,al=ffff6h
注意:在匯編源程序中不能以字母開頭,前面要加個零。
assume cs:code code segmentmov ax,0ffffhmov ds,axmov bx,6 ;以上設置ds:bx指向ffff:6mov al,[bx] ;al=ffff6hmov ah,0 ;以上,設置al=ds*16+bx=ffff6h, ah=0mov dx,0 ;累加寄存器清零mov cx,3 ;循環三次s: add dx,axloop smov ax,4c00hint 21h code ends end題目:將內存FFFF:0~FFFF:F內存單元中的數據復制到0:200 ~ 0:20F中
編程的時候要搞清楚,數據從哪來,要放到哪去。還要注意初始化
方法一:
方法一中push ds,但是沒有設置棧段,比較危險哦!
方法二:
方法二中不斷修改ds,很浪費CPU的操作
優化:
方法三:
引入es寄存器(和數據相關)——》
個人編程習慣:
將ds代表數據從哪來
es表示數據到哪去
該方法要循環16次——》實現從字節型數據復制——》如何實現字型數據的復制
再優化:
方法四:
總結
以上是生活随笔為你收集整理的将某内存单元数据做乘法 + 内存间数据的复制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android 短信编解码方式,中移短信
- 下一篇: python3 获取file大小_Go语