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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

不通过寄存器确定数据的长度 + 案例

發布時間:2025/3/15 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 不通过寄存器确定数据的长度 + 案例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

不通過寄存器確定數據的長度

在8086CPU指令中,可以處理byte和word兩種尺寸的數據。所以要在機器指令指明,指令進行的是字操作還是字節操作。
(1)通過寄存器名指明操作對象

指明進行字操作:
mov ax,1
mov bx,ds:[0] ;取一個字型數據
mov ds,ax
mov ds:[0],ax ;把一個字型數據放進去
inc ax
add ax,1000


指明進行字節操作:
mov al,1
mov al,bl ;位數一致
mov al,ds:[0] ;取一個字節型數據
mov ds:[0],al
inc al
add al,100

(2)在沒有寄存器名存在的情況下,用操作符X ptr指明內存數據的長度

word ptr指明指令訪問的內存單元是一個字單元
byte ptr指明指令訪問的內存單元是一個字節單元

mov ds:[0],1 并不能判斷操作的是字型數據還是字節型數據
mov word prt ds:[0],1 ;這里的1會被翻譯為字數據的1,占16位
mov byte ptr ds:[0],1 ; 這里的1會被翻譯為字型數據,占8位
在沒有寄存器參與的內存單元訪問指令中 ,用word ptr或者byte ptr顯性地指明所要訪問的內存單元的長度是很有必要的!

尋址方式的綜合利用(案例):

關于DEC公司的一條記錄(1982年)如下:
公司名稱: DEC
總裁姓名:Ken Olsen
排名: 137
收入:40(40億美元)
著名產品:PDP(小型機)

到了1988年DEC公司的信息有了如下變化。
(1)Ken Olsen在富翁榜上的排名已升至38位;
(2) DEC的收入增加了70億美元;
(3)該公司的著名產品已變為VAX系列計算機
編程修改內存中的過時數據。

第一步一定要查看數據在內存中的分布,非常重要!!!


代碼如下:

assume cs:code,ds:data,ss:stack data segmentdb 'DEC' ;公司名db 'Ken Olsen' ;總裁姓名dw 137 ;排名 ==》上升至38位 —》通過觀察數據在內存中的分布可知起始地址在第12位dw 40 ;收入(40億美元)==》增加70億美元 ;起始地址在第14位db 'PDP' ;著名產品 ==》VAX ;起始地址在第16位 data endsstack segmentdw 0,0,0,0,0,0,0,0dw 0,0,0,0,0,0,0,0 stack endscode segmentstart:mov ax,stackmov ss,axmov sp,32mov ax,datamov ds,axmov bx,0mov word ptr ds:[bx+12],38 ;改為38 字型數據 add word ptr ds:[bx+14],70 ;增加70mov si,0 ;再使用一個偏移地址寄存器simov byte ptr ds:[bx+16+si],'V';這里的16也可以改成10Hinc si mov byte ptr ds:[bx+16+si],'A'inc si mov byte ptr ds:[bx+16+si],'X'mov ax,4c00hint 21h code ends end start

總結

以上是生活随笔為你收集整理的不通过寄存器确定数据的长度 + 案例的全部內容,希望文章能夠幫你解決所遇到的問題。

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