汇编 实验1 Debug 基本命令及汇编基本指令

1、设 AX=3000H,BX=5000H;请编一程序段将 AX 和 BX 的内容进行交换。 要求:
(1)分别用 3 种方法实现;
(2)用 DEBUG 进行汇编与调试;
(3)记录每种方法执行结果

(1)分别用 3 种方法实现

  1. 方法一:使用 X C H G XCHG XCHG指令
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. 方法二:利用一个中间量 C X CX CX交换 A X AX AX B X BX BX
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 的值是什么?

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

标准位10
进位标志CFCYNC
符号标志SFNGPL
零标志ZFZRNZ
  • 14
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值