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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

超级搬运工

發布時間:2025/3/21 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 超级搬运工 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前我們往屏幕輸出了一個Hello,費了老大的勁。
有沒有什么更簡單的方法呢?
當然有啦。

我們把所有的文字對應的Ascll碼統一放到一塊內存里面。
再把這些東西統一搬進去顯存里面。


?




mov cx,10
ES:B800
DI:0

DS:07C0
SI:8


rep?movsb byte ptr [ES:DI],byte ptr [DS:SI]

超級搬運工:
1.要搬的東西的在哪里。
2.把東西搬到哪里去。
3.每一次可以搬多少東西,需要搬多少次。
4.從上往下搬,還是從下往上搬。


movsb?

?

?32位?16位8位寄存器
?EAX?AXAH?AL
?ECX?CXCH?CL
?EDX?DXDH DL
?EBX?BXBH BL
?ESP?SP?
?EBP?BP?
?ESI?SI?
?EDI?DI?




DF=方向標志位(Direction Flag)
決定串處理指令控制每次操作后si、di的增減。
df=0,則每次操作后si、di遞增,否則遞減。


cld指令會把DF=0
std指令會把DF=1




repeat



在8086種,有這樣的功能指令叫做
movsb和movsw
move string

這兩個指令的作用是,把一塊內存的東西搬到另外一塊內存里面。

那么它如何使用呢?

movsb=是以字節進行復制
movsw=是以兩個字節(字)進行復制

movsb byte ptr [ES:DI],byte ptr [DS:SI]


從哪里開始搬東西呢?需要一個地址DS:SI
把東西搬到哪里呢? ES:DI

搬幾次呢?? 把要搬的次數放到 cx里面。?
每搬1次,就把cx里面的數字減1,減到0就代表搬完了。

mov ax,0x07c0? ;3 07c00
mov ds,ax ;2

jmp near mycode? ;3


mydata:;07c08
db 'H',0x7,'e',0x7,'l',0x7,'l',0x7,'o',0x7


mycode:
mov ax,0xb800
mov es,ax

mov cx,10
mov si,mydata
mov di,0

rep movsb? ; movsb byte ptr [ES:DI],byte ptr [DS:SI]


stop: jmp near stop
times 510-($-$$) db 0

dw 0xAA55

備注,DI指b8000~b8009 ? ? ? si指7c08~7c11 ?mydata=0x7c08

?

轉載于:https://www.cnblogs.com/xiaodaxiaonao/p/7143588.html

總結

以上是生活随笔為你收集整理的超级搬运工的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。