王爽汇编实验(三)

王爽汇编浅显易懂,虽然前面两个实验都做完了,但是都是吊儿郎当做完的。

看到第三次实验比较好写心得,就写了。

原码如下,用提到的LINK.EXE和MASM.EXE进行编译链接操作。

assume cs:codesg
codesg segment
mov ax,2000H
mov ss,ax
mov sp,0
add sp,10
pop ax
pop bx
push ax
push bx
pop ax
pop bx

mov ax,4c00H
int 21H
codesg ends
end

首先是用debug 跟踪t1.exe执行过程,写出每一步执行后,相关寄存器中的内容和栈顶的内容。

程序即将开始运行,这时候给出了下一条指令 mov ax,2000H

这时候ax至FFFF,DS和CS差10H,IP偏移地址为0。

输入t执行,可以看到ax已经变成2000H了,因为是寄存器和立即数,所以占3个字节,IP变成0003,其他未变。

继续t执行。

ss变成了ax内存放的2000H。中间原本有一行指令 mov sp,0但是因为debug的对栈操作,直接在mov ss,ax后立刻执行,所以下一条语句是add sp,10

sp变成了000AH

因为pop的缘故,栈向上增长,sp增加了2字节,变成000CH

同理sp=000EH,这时候发现了AX从2000H变成了0000H,因为栈本来就是空的,又无故出栈,pop把SS:SP当时的字单元给到了AX,于是AX置0,如果BX有值的话也为0。

SP变了回去,因为POP和PUSH都用一个字节,IP每次增长1H。

后面其实也可以看到,SP又反弹了=-=。

最后两个是返回语句,AX变成4C00H,IP+3,指令地址又变成CS:IP=F000:14A0。

至此第二问结束。

(3)PSP的头两个字节是CD 20。用DEBUG加载t1.exe,查看PSP的内容。

PSP就是DS和CS之间的0010H*16=256字节

下面就不必要看了,就是这256字节就是t1.exe的说明。

实验结束,开开心心

原文地址:https://www.cnblogs.com/otakus/p/11831149.html

时间: 2024-08-04 04:11:50

王爽汇编实验(三)的相关文章

王爽汇编实验九

1 ;实验九 2 assume cs:code,ds:data 3 data segment 4 db 'welcome to masm!' 5 data ends 6 7 code segment 8 start : 9 mov ax,data 10 mov ds,ax;定义数据段 11 12 mov ax,0B800h 13 mov es,ax;定义显示段 14 15 mov cx,16 16 mov si,0 17 mov di,10*160+80 ;将输出显示放在第10行中间 18 19

王爽汇编实验十一

;实验11 ;把小写字母换成大写字母 assume cs:code , ds:data data segment db "Beginner's All-purpose Symbolic Instruction Code.",0 data ends code segment start: mov ax,data mov ds,ax mov si,0 call letterc mov ax,4c00h int 21h letterc: push ax push si fun: mov al

王爽汇编第三版实验10

1. 显示字符串 1 assume cs:code 2 3 data segment 4 db 'Welcome to masm!',0 5 data ends 6 7 stack segment 8 db 16 dup (0) 9 stack ends 10 11 code segment 12 start: 13 mov dh,8 14 mov dl,3 15 mov cl,2 16 mov ax,data 17 mov ds,ax 18 mov si,0 19 call show_str

王爽 汇编 实验10.1

一.实验要求 二.代码实现 1 assume cs:code,ds:data 2 3 data segment 4 db 'welcome to masm!',0 5 data ends 6 7 code segment 8 start: mov dh,8 ;定义行(0-24) 9 mov dl,3 ;定义列(0-79) 10 mov cl,2 ;定义颜色 11 mov ax,data 12 mov ds,ax 13 mov si,0 ;指向字符串的首地址 14 call show_str ;调

王爽汇编 实验13

1. assume cs:code data segment db 'welcome to masm! ',0 data ends code segment start: mov ax,cs mov ds,ax mov si,offset capital mov ax,0 mov es,ax mov di,200h mov cx,offset capitalend-offset capital cld rep movsb mov ax,0 mov es,ax mov word ptr es:[7

王爽汇编第三版检测点10.5

(1)下面的程序执行后,ax 中的数值是多少? 1 assume cs:code 2 stack segment 3 dw 8 dup (0) 4 stack ends 5 code segment 6 start: mov ax,stack 7 mov ss,ax 8 mov sp,16 9 mov ds,ax 10 mov ax,0 11 call word ptr ds:[0] 12 inc ax 13 inc ax 14 inc ax 15 mov ax,4c00h 16 int 21h

王爽汇编10.12

;10.12 assume cs:code,ds:data data segment db 'word',0 db 'unix',0 db 'wind',0 db 'good',0 data ends code segment start : mov ax,data mov ds,ax mov si,0 mov di,16 mov cx,4 s: call cap inc si loop s MOV AX,4C00H INT 21H cap: push cx tip: mov cl,[si] m

20145311王亦徐 实验三 "敏捷开发与XP实践"

20145311王亦徐 实验三 "敏捷开发与XP实践"程序设计过程 实验内容 使用 git 上传代码 使用 git 相互更改代码 实现代码的重载 git 上传代码 查看代码是否有修改: 发现no changes 将代码上传到自己的开源中国项目中: 新建存储空间.然后进行git add.git commit.git push 两人运用版本控制进行合作修改代码: 首先通过对方的地址将代码下载下来:(git clone) 对代码进行修改后再上传: 合作对方对我的代码进行修改后再上传的结果 实

跟我学汇编(二)王爽汇编环境搭建

这一次我们来讲解一下如何在window上搭建一个王爽教材中所用的汇编环境.王爽的书中用的是8086CPU,现在的CPU肯定是不一样啦,所以我们使用虚拟机来模拟一下. 一.下载系统 我们采用MS-DOS7.10系统,这里我提供一个免费的下载地址http://download.csdn.net/detail/xingjiarong/9428514,上次我看到了一个哥们的环境搭建过程,搭建好系统下载竟然要5个积分,我一气之下就自己动手搭建一个.这里下载之后是一个DOS的IOS文件,下面我们就来安装这个