汇编实验二

(1)使用DEBUG,将上面的程序段写入内存,逐条执行,根据指令执行后的实际运行情况填空。 

e 0021:0  0021:7  30H,31H,32H,33H,34H,34H,35H,36H,37H

mov ax,0021

mov ds,ax

mov ax,2200

mov ss,ax

mov sp,0100

 

mov ax,[0]    ;ax= 3130

add ax,[2]    ;ax= 6462

mov bx,[4]    ;bx= 3534

add bx,[6]    ;bx= 6c6A

 

push ax       ;sp= 00FEH ,修改的内存单元地址是 2200:00FE 内容为 6462H

push bx       ;sp= 00FCH ,修改的内存单元地址是 2200:00FC 内容为 6c6AH

pop ax        ;sp= 00FEH ,ax= 6c6AH

pop bx        ;sp= 0100H ,bx= 6462H

 

push [4]      ;sp= 00FEH ,修改的内存单元地址是 2200:00FE 内容为 3534

push [6]      ;sp= 00FCH ,修改的内存单元地址是 2200:00FC 内容为 3736

以上是实验指令执行后结果

按照要求输入指令,使用a指令输入。

实验2 用机器指令和汇编指令编程 

(2)仔细观察图3.19中的实验过程,然后分析:为什么2000:0~2000:F中的内容会发生改变? 

输入指令

中断机制,Debug的T命令在执行修改寄存器SS的指令时,下一条指令也紧接着被执行。

后来查找资料,得知中断过程使用当前栈空间存放cpu关键数据,所以,你的栈里就有些不是所操作的数据。 

 mov  ss,ax改变了栈堆段寄存器的内存地址。

转载于:https://www.cnblogs.com/saudade/p/9893324.html

### 关于《汇编语言》王爽教材中的实验 #### 示例代码解析 以下是基于王爽《汇编语言》教材中实验的一个典型示例程序,该实验通常涉及简单的输入输出操作以及寄存器的使用。以下是一个可能的代码实现及其详细解释: ```asm ; 程序功能:从键盘接收一个字符并显示到屏幕上 data segment msg db 'Please input a character:', 0dh, 0ah, '$' ; 提示信息 data ends code segment assume cs:code, ds:data start: mov ax, data ; 初始化数据段寄存器 mov ds, ax ; lea dx, msg ; 显示提示信息 mov ah, 9 ; int 21h ; mov ah, 1 ; 调用DOS中断获取单个字符 int 21h ; mov dl, al ; 将读取的字符放入DL寄存器 mov ah, 2 ; 使用DOS中断显示字符 int 21h ; mov ah, 4ch ; 返回操作系统 int 21h ; code ends end start ``` 上述代码的功能是从键盘接收一个字符,并将其回显到屏幕上[^1]。 #### 寄存器的作用说明 - `AX` 是累加器,在这里用于加载数据段地址。 - `DS` 数据段寄存器指向当前的数据段位置。 - `DX` 用来存储要打印的信息或者字符的位置。 - `AL` 存储通过 DOS 中断函数接收到的字符。 - `AH` 设置为不同的值来调用特定的 DOS 功能,比如 `int 21h` 的子功能号。 #### DOS 中断功能详解 - **`INT 21H / AH=9`**: 输出字符串至标准设备(屏幕),字符串需以 `$` 结束。 - **`INT 21H / AH=1`**: 接收来自键盘的标准输入,返回值保存在 AL 寄存器中。 - **`INT 21H / AH=2`**: 向标准输出发送 DL 寄存器指定的内容。 - **`INT 21H / AH=4CH`**: 正常终止程序并返回操作系统控制。 这些中断提供了便捷的方式来处理基本 I/O 操作而无需深入硬件层面的操作[^2]。 #### 注意事项 编写汇编语言程序时需要注意大小写敏感性和语法准确性。另外,由于不同环境下的汇编工具可能存在差异,因此建议按照具体开发平台的要求调整代码细节。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值