彙編實驗 1 Debug 基本命令及彙編基本指令

1、設 AX=3000H,BX=5000H;請編一程序段將 AX 和 BX 的內容進行交換。 要求:
(1)分別用 3 種方法實現;
(2)用 DEBUG 進行彙編與調試;
(3)記錄每種方法執行結果

(1)分別用 3 種方法實現

  1. 方法一:使用XCHGXCHG指令
DATA SEGMENT 
	X DW 3000H
	Y DW 5000H
DATA ENDS
CODE SEGMENT
	ASSUME CS:CODE,DS:DATA
START:
	MOV AX,DATA
	MOV DS,AX
	MOV AX,X
	MOV BX,Y
	XCHG AX,BX
	MOV AH,4CH
	INT 21H
CODE ENDS
	END START
  1. 方法二:利用一箇中間量CXCX交換AXAXBXBX
DATA SEGMENT 
	X DW 3000H
	Y DW 5000H
DATA ENDS
CODE SEGMENT
	ASSUME CS:CODE,DS:DATA
START:
	MOV AX,DATA
	MOV DS,AX
	MOV AX,X
	MOV BX,Y
	MOV CX,AX
	MOV AX,BX
	MOV BX,CX
	MOV AH,4CH
	INT 21H
CODE ENDS
	END START
  1. 方法三:利用堆棧實現
DATA SEGMENT 
	X DW 3000H
	Y DW 5000H
DATA ENDS
CODE SEGMENT
	ASSUME CS:CODE,DS:DATA
START:
	MOV AX,DATA
	MOV DS,AX
	MOV AX,X
	MOV BX,Y
	PUSH AX
	PUSH BX
	POP AX
	POP BX
	MOV AH,4CH
	INT 21H
CODE ENDS
	END START

(2)用 DEBUG 進行彙編與調試

  1. 方法一
    在這裏插入圖片描述
  2. 方法二
    在這裏插入圖片描述
  3. 方法三
    在這裏插入圖片描述

(3)記錄每種方法執行結果

  1. 方法一
    在這裏插入圖片描述
  2. 方法二
    在這裏插入圖片描述
  3. 方法三
    在這裏插入圖片描述

2、分別執行以下指令,比較立即尋址和直接尋址間的區別,寄存器尋址、寄存器間接尋址和相 對寄存器尋址間的區別。
(1)

Mov ax,1000H 
Mov ax,[1000h]  

(2)

mov bx,2000H  
mov ax,bx  
mov ax,[bx]  
mov ax,30[bx] 

要求:
(1)在執行以上指令時,記下當時 DS 數據段的值,寫出每條指令執行後 AX 的結果。
(2)用 E命令修改指令偏移地址“1000h”處的值,再次執行“Mov ax,[1000h]”,指令, 記錄執行結果。

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

3、已知有如下程序段:

MOV AX,5678H
MOV CL,4 
STC ;設置 CF=1 在以上程序段的基礎上,分別執行以下指令,觀察 AX 值的變化。 
ROL AX,CL 
ROR AX,CL 
SHL AX,CL 
SHR AX,CL 
SAR AX,CL 
RCL AX,CL 
RCR AX,CL

試在 DEBUG 下用 A 命令彙編以上程序段,用 T 命令跟蹤,觀察以下內容:
(1)每條指令執行完後,AX 寄存器的內容是什麼?
(2)每條指令執行完後,進位位 CF、符號位 SF 和零標誌位 ZF 的值是什麼?

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

標準位 1 0
進位標誌CF CY NC
符號標誌SF NG PL
零標誌ZF ZR NZ
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章