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

匯編語言功能實現數據復制實例詳解

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

問題1:將內存ffff:0~ffff:b單元中的數據復制到0:200~0:20b單元中

分析

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

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

2、單元中的數據能直接進行復制轉移嗎

不可以,需要用寄存器進行中轉

assume cs:code
code segment
;做法一
;-----------------------------
	mov bx,0		;因為數據來源和去處的偏移地址相同,用bx同意代替
	mov cx,12
 
 
s:	mov ax,offffh	;因為需要重復利用ax,所以需要循環(huán)設置
	mov ds,ax
	mov dl,ds:[bx]	;將數據復制到dx的低8位中
 
	mov ax,0020h
	mov ds,ax
	mov ds:[bx],dl	;將數據復制到指定的內存單元中
 
	inc bx			;向下一個單元移動
	loop s
 
;-----------------------------
 
;做法二,上一個做法需要重復設置ds,這里可改進
;-----------------------------
	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“之前的指令復制到內存0:200處

分析:

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

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

2、如何知道代碼的長度

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

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

問題3:將程序中定義的數據逆序存放

分析: 如何實現逆序 利用棧的特性實現

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	;??臻g是從后往前添加,棧頂指向30h
 
		mov bx,0
		mov cx,8
 
s:		push cs:[bx]
		add bx,2
		loop s		;將數據段中的0~15單元中的數據壓入棧中
 
		mov bx,0
		mov cx,8
 
s0:		pop cs:[bx]
		add bx,2
		loop s0		;依次出棧8個字型數據
 
		mov ax,4c00h
		int 21h
 
code ends
end start

改進版:以上程序中的內容沒有分段存儲,可改進

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	;棧開始的地址已經不包括data段的內容,則為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”復制到它后面的數據區(qū)中

分析

1、要復制到數據在哪里

數據的起始地址在data:0

2、要復制到哪里去

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

3、一共復制了幾次

因為使用的是16位寄存器,一次可以傳輸兩個字節(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	;設置數據來源的起始位置
		mov di,16	;設置數據去處的起始位置
 
		mov cx,8	;用寄存器進行復制,只需要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
;----------------------------------
;做法二:只利用一個寄存器就可以實現 
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

以上就是匯編語言功能實現數據復制實例詳解的詳細內容,更多關于匯編語言實現數據復制的資料請關注腳本之家其它相關文章!

相關文章

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

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

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

    匯編語言XOR指令:對兩個操作數進行邏輯(按位)異或操作(推薦)

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

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

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

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

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

    libAccessibility通知Crash排查記錄分析

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

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

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

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

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

    匯編程序add指令的使用

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

    利用DOSBox運行匯編的詳細步驟

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

    匯編語言學習手把手的Debug教程

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

最新評論

永泰县| 荥经县| 仪陇县| 文昌市| 思南县| 乐山市| 商水县| 光山县| 尤溪县| 凤阳县| 中江县| 灵宝市| 休宁县| 洪洞县| 阳信县| 随州市| 廊坊市| 天镇县| 潞城市| 东乌| 肇庆市| 扬中市| 永城市| 读书| 象山县| 西安市| 驻马店市| 察雅县| 北碚区| 海门市| 青州市| 仁布县| 岳普湖县| 昭平县| 绍兴市| 青田县| 舞钢市| 永城市| 黄骅市| 泉州市| 尤溪县|