最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

匯編語言功能實(shí)現(xiàn)數(shù)據(jù)復(fù)制實(shí)例詳解

 更新時(shí)間:2021年11月04日 15:32:38   作者:LyncDwight  
這篇文章主要為大家介紹了匯編語言功能實(shí)現(xiàn)數(shù)據(jù)復(fù)制的實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步

問題1:將內(nèi)存ffff:0~ffff:b單元中的數(shù)據(jù)復(fù)制到0:200~0:20b單元中

分析

1、0:200~0:20b單元如何表示

0020:0~0020:b可以等同于以上單元,而且單元的偏移地址是從0開始,和需要復(fù)制的單元相同

2、單元中的數(shù)據(jù)能直接進(jìn)行復(fù)制轉(zhuǎn)移嗎

不可以,需要用寄存器進(jìn)行中轉(zhuǎn)

assume cs:code
code segment
;做法一
;-----------------------------
	mov bx,0		;因?yàn)閿?shù)據(jù)來源和去處的偏移地址相同,用bx同意代替
	mov cx,12
 
 
s:	mov ax,offffh	;因?yàn)樾枰貜?fù)利用ax,所以需要循環(huán)設(shè)置
	mov ds,ax
	mov dl,ds:[bx]	;將數(shù)據(jù)復(fù)制到dx的低8位中
 
	mov ax,0020h
	mov ds,ax
	mov ds:[bx],dl	;將數(shù)據(jù)復(fù)制到指定的內(nèi)存單元中
 
	inc bx			;向下一個(gè)單元移動
	loop s
 
;-----------------------------
 
;做法二,上一個(gè)做法需要重復(fù)設(shè)置ds,這里可改進(jìn)
;-----------------------------
	mov ax,0ffffh
	mov ds,ax 
	mov ax 0020h
	mov es,ax 
	mov bx,0
	mov cx,12
 s:	mov dl,ds:[bx]
	mov es:[bx],dl
	inc bx
	loop s
 
;-----------------------------
 
	mov ax,4c00h
	int 21h
 code ends
end

問題2:將“mov ax,4c00h“之前的指令復(fù)制到內(nèi)存0:200處

分析:

1、如何知道代碼的起始地址

利用cs指向的就是代碼的開始地址

2、如何知道代碼的長度

可以使用(offset 標(biāo)號)之間相減得出代碼的長度

assume cs:code
code segment
start:	        mov ax,cs
	 	mov ds,ax
		mov ax,0020h
		mov es,ax	;設(shè)置復(fù)制數(shù)據(jù)的來源和去處
 
		mov bx,0
		mov cx,offset last-offset start	  ;設(shè)置代碼的長度
 
s:		mov al,ds:[bx]
		mov es:[bx],al	;實(shí)現(xiàn)數(shù)據(jù)的轉(zhuǎn)移
		inc bx
last:           loop s
 
		mov ax,4c00h
		int 21h
code ends
end

問題3:將程序中定義的數(shù)據(jù)逆序存放

分析: 如何實(shí)現(xiàn)逆序 利用棧的特性實(shí)現(xiàn)

assume cs:code
code segment
	dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
	dw 16 dup(0)	;??臻g的使用
 
start: 	mov ax,cs
		mov ss,ax
		mov sp,30h	;棧空間是從后往前添加,棧頂指向30h
 
		mov bx,0
		mov cx,8
 
s:		push cs:[bx]
		add bx,2
		loop s		;將數(shù)據(jù)段中的0~15單元中的數(shù)據(jù)壓入棧中
 
		mov bx,0
		mov cx,8
 
s0:		pop cs:[bx]
		add bx,2
		loop s0		;依次出棧8個(gè)字型數(shù)據(jù)
 
		mov ax,4c00h
		int 21h
 
code ends
end start

改進(jìn)版:以上程序中的內(nèi)容沒有分段存儲,可改進(jìn)

assume cs:code,ds:data,ss:stack
date segment
	dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
date ends
stack segment
	dw 16 dup(0)	;??臻g的使用
stack ends 
code segment
start:	mov ax,stack
		mov ss,ax
		mov sp,20h	;棧開始的地址已經(jīng)不包括data段的內(nèi)容,則為20h 
		mov ax,data
		mov ds,ax
 		mov bx,0
		mov cx,8 
s:		push ds:[bx]
		add bx,2
		loop s
 		mov bx,0
		mov cx,8 
s0:		pop ds:[bx]
		add bx,2
		loop s0
 		mov ax,4c00h
		int 21h
code ends 
end start

問題4:將字符串”welcome to masm”復(fù)制到它后面的數(shù)據(jù)區(qū)中

分析

1、要復(fù)制到數(shù)據(jù)在哪里

數(shù)據(jù)的起始地址在data:0

2、要復(fù)制到哪里去

復(fù)制的數(shù)據(jù)長度是16個(gè)字節(jié),后面的數(shù)據(jù)區(qū)的偏移地址就是16

3、一共復(fù)制了幾次

因?yàn)槭褂玫氖?6位寄存器,一次可以傳輸兩個(gè)字節(jié),所以只需要執(zhí)行8次

assume cs:code,ds:data
 data segment
	db 'welcome to masm!'
	db 16 dup(0)
data ends 
;----------------------------------
;做法一
code segment
start:	mov ax,data
		mov ds,ax
		mov si,0	;設(shè)置數(shù)據(jù)來源的起始位置
		mov di,16	;設(shè)置數(shù)據(jù)去處的起始位置
 
		mov cx,8	;用寄存器進(jìn)行復(fù)制,只需要8次
s:		mov ax,ds:[si]
		mov ds:[di],ax
		add si,2
		add di,2
		loop s 
		mov ax,4c00h
		int 21h
code ends
;----------------------------------
;做法二:只利用一個(gè)寄存器就可以實(shí)現(xiàn) 
code segment
start:	mov ax,data
		mov ds,ax
		mov si,0
 
		mov cx,8
s: 		mov ax,ds:[si]
		mov ds:[si+16],ax
		add si,2
		loop s
 		mov ax,4c00h
		int 21h
code ends
 end start

以上就是匯編語言功能實(shí)現(xiàn)數(shù)據(jù)復(fù)制實(shí)例詳解的詳細(xì)內(nèi)容,更多關(guān)于匯編語言實(shí)現(xiàn)數(shù)據(jù)復(fù)制的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 匯編分析 Golang 循環(huán)(推薦)

    匯編分析 Golang 循環(huán)(推薦)

    循環(huán)是編程中很強(qiáng)大的一個(gè)概念,而且非常容易處理。這篇文章主要介紹了匯編分析 Golang 循環(huán),需要的朋友可以參考下
    2020-02-02
  • 匯編語言XOR指令:對兩個(gè)操作數(shù)進(jìn)行邏輯(按位)異或操作(推薦)

    匯編語言XOR指令:對兩個(gè)操作數(shù)進(jìn)行邏輯(按位)異或操作(推薦)

    匯編語言(assembly language)是一種用于電子計(jì)算機(jī)、微處理器、微控制器或其他可編程器件的低級語言,亦稱為符號語言。這篇文章主要介紹了匯編語言XOR指令:對兩個(gè)操作數(shù)進(jìn)行邏輯(按位)異或操作,需要的朋友可以參考下
    2020-01-01
  • 匯編語言教程文件后綴大小寫S區(qū)別分析詳解

    匯編語言教程文件后綴大小寫S區(qū)別分析詳解

    這篇文章主要為大家介紹了匯編文件后綴.s與.S區(qū)別分析詳解,文中詳細(xì)的講解了大寫的S與小寫的s后綴在匯編語言中的作用區(qū)別,有需要的朋友可以借鑒參考下
    2021-11-11
  • VScode配置8086匯編環(huán)境的過程解析

    VScode配置8086匯編環(huán)境的過程解析

    這篇文章主要介紹了VScode配置8086匯編環(huán)境的過程解析,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-04-04
  • libAccessibility通知Crash排查記錄分析

    libAccessibility通知Crash排查記錄分析

    這篇文章主要為大家介紹了libAccessibility通知Crash排查記錄分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • UEFI開發(fā)實(shí)戰(zhàn)SlimBootloader中調(diào)用FSP

    UEFI開發(fā)實(shí)戰(zhàn)SlimBootloader中調(diào)用FSP

    這篇文章主要為大家介紹了UEFI開發(fā)實(shí)戰(zhàn)SlimBootloader中調(diào)用FSP基礎(chǔ)教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • 匯編語言?masm5與debug命令使用方法小結(jié)

    匯編語言?masm5與debug命令使用方法小結(jié)

    本文總結(jié)了匯編程序的基本框架及規(guī)范、masm5工具的基本使用方法、debug命令的基本使用方法
    2023-08-08
  • 匯編程序add指令的使用

    匯編程序add指令的使用

    add指令是CPU用來加法計(jì)算的匯編指令,本文主要介紹了匯編程序add指令的使用,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-03-03
  • 利用DOSBox運(yùn)行匯編的詳細(xì)步驟

    利用DOSBox運(yùn)行匯編的詳細(xì)步驟

    本文分步驟給大家介紹了利用DOSBox運(yùn)行匯編,起初是利用VS2017進(jìn)行配置,但后面運(yùn)行好像有些問題,就想到用DOSBox,本文分步驟給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2022-03-03
  • 匯編語言學(xué)習(xí)手把手的Debug教程

    匯編語言學(xué)習(xí)手把手的Debug教程

    這篇文章主要為大家分介紹了匯編語言學(xué)習(xí)的Debug教程內(nèi)容,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2021-11-11

最新評論

漳浦县| 南川市| 平武县| 景东| 绥江县| 依兰县| 抚顺市| 普陀区| 马鞍山市| 通许县| 奇台县| 堆龙德庆县| 新绛县| 巴林右旗| 绥棱县| 西城区| 定日县| 成武县| 长沙县| 江北区| 江达县| 台前县| 屯留县| 台江县| 东海县| 岚皋县| 玉溪市| 庐江县| 静宁县| 河北省| 马山县| 昌平区| 兖州市| 林口县| 简阳市| 临城县| 临沭县| 南华县| 清水河县| 石首市| 新巴尔虎左旗|