汇编语言-王爽-完美高清版视频教程
- 格式:doc
- 大小:57.00 KB
- 文档页数:5
Program terminated normally
-q
实验4 [bx]和loop的使用
(3)下面的程序功能是将“mov ax,4c00h"之前的指令复制到内存0:200处,补全程序。
上机调试,跟踪运行结果。
assume cs:code
code segment
mov ax, code ;或mov ax, cs
mov ds,ax
mov ax,0020h
mov es,ax
mov bx,0
mov cx, 18h ;或mov cx, 17h ;或sub cx,5
s: mov al,[bx]
mov es:[bx],al
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end
此题有多个答案,因为mov用在寄存器之间传送数据的指令是2个字节,用在寄存器和立即数之间是3个字节
答案1:mov ax,cs (占2个字节)
mov cx,17
答案2:mov ax,code (占3个字节)
mov cx,18
答案3:mov ax,cs 或mov ax,code
把mov cx, 改成sub cx,5
(因为在载入程序时,cx保存程序的长度,减去5是为减去mov ax,4c00h和int 21h的长度)
此题的目的是:。
汇编语言》-王爽-完美高清版-零基础汇编语言入门书籍PDF格式同时按ctrl+要下载的地址既可下载对应的视频下载地址:/file/f61cb107c8001第一章- 基础知识01下载地址:/file/f6806f45b8002第一章- 基础知识02下载地址:/file/f6ec42d4d3003第一章- 基础知识03下载地址:/file/f6deb05ec4004第一章-基础知识04下载地址:/file/f6e51f6838005第一章- 基础知识05下载地址:/file/f66edaf8d3006第二章- 寄存器(CPU工作原理)01下载地址:/file/f6d07e07b9007第二章- 寄存器(CPU工作原理)02下载地址:/file/f6d7f585a8008第二章- 寄存器(CPU工作原理)03下载地址:/file/f639d8b3cf009第二章- 寄存器(CPU工作原理)04下载地址:/file/f6dcadbde6010第二章- 寄存器(CPU工作原理)05下载地址:/file/f6ea3f01c1011第二章- 寄存器(CPU工作原理)06下载地址:/file/f65b96a06f012第二章- 寄存器(CPU工作原理)07下载地址:/file/f682da085a013第三章- 寄存器(内存访问)01下载地址:/file/f6486e698014第三章- 寄存器(内存访问)02下载地址:/file/f6b7491d9f015第三章- 寄存器(内存访问)03下载地址:/file/f622b7f9a7016第三章- 寄存器(内存访问)04下载地址:/file/f64e2424b9017第三章- 寄存器(内存访问)05下载地址:/file/f6e5132d4d018第三章- 寄存器(内存访问)06下载地址:/file/f655c10e86019第三章- 寄存器(内存访问)07下载地址:/file/f6b22e64e6020第四章- 第一个程序01下载地址:/file/f6812126a4021第四章- 第一个程序02下载地址:/file/f6523e625c022第四章- 第一个程序03下载地址:/file/f63e0ccb28023第五章- [BX]和loop指令01下载地址:/file/f611e07b8a#024第五章- [BX]和loop指令02下载地址:/file/f6e047bccc#025第五章- [BX]和loop指令03下载地址:/file/f6d348d781#026第五章- [BX]和loop指令04下载地址:/file/f6ada24153#027第五章- [BX]和loop指令05下载地址:/file/f64f97518b#028第五章- [BX]和loop指令06下载地址:/file/f6f9ba96f8#029第六章- 包含多个段的程序01下载地址:/file/f650e06f38#030第六章- 包含多个段的程序02下载地址:/file/f683ee5b2a#031第六章- 包含多个段的程序03下载地址:/file/f69009bfc2#032第七章- 更灵活定位内存地址的方法01下载地址:/file/f6ea427646#033第七章- 更灵活定位内存地址的方法02下载地址:/file/f6acdc6b7f#034第七章- 更灵活定位内存地址的方法03下载地址:/file/f6c85745d0#035第七章- 更灵活定位内存地址的方法04下载地址:/file/f61a26cf12#36第七章- 更灵活定位内存地址的方法05下载地址:/file/f631edf5c6#037第七章- 更灵活定位内存地址的方法06下载地址:/file/f6b0fa6fb8#038第八章- 数据处理的两个基本问题01下载地址:/file/f6f5fe8962#039第八章- 数据处理的两个基本问题02下载地址:/file/f6bf975e0#040第八章- 数据处理的两个基本问题03下载地址:/file/f6d522784c#041第八章- 数据处理的两个基本问题04下载地址:/file/f6b5ac9991# 042实验七寻址方式在结构化数据访问中的应用下载地址:/file/f62e80ced5#076第十七章_使用BIOS进行键盘输入和磁盘读写02/file/bhbgrnfz#077第十七章_使用BIOS进行键盘输入和磁盘读写03[url=/file/dnsl0kxp#[/sell]/file/dnsl0kxp#[/sell[/url]]。
汇编语⾔(王爽第三版)实验5编写、调试具体多个段的程序实验5 编写、调试具体多个段的程序⼀。
将下⾯的程序编译连接,⽤Debug加载、跟踪,然后回答问题。
assume cs:code,ds:data,ss:stackdata segmentdw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987hdata endsstack segmentdw 0,0,0,0,0,0,0,0stack endscode segmentstart: mov ax,stackmov ss,axmov sp,16mov ax,datamov ds,axpush ds:[0]push ds:[2]pop ds:[2]pop ds:[0]mov ax,4c00hint 21hcode endsend start程序分析:由于是初次接触,我们逐步讲解,废话多点。
(1)此程序考察的是内存中数据段和栈段的定义。
程序共定义了1个数据段,data段,⾸先明确,在程序运⾏开始(标号start处),这个数据段就已经被定义好了,并且分配了内存空间,并赋值了。
⼀个栈段,stack。
同理这个数据段在没有被⼈⼯定义为栈结构时,也被定义好了。
并且分配了内存空间,并赋值了。
将此程序编译并连接后,使⽤debug调试,(这⾥需要注意,以下的段地址可能由于系统不同⽽有差异,主要是理解概念。
)E:\assembly>debug eee.exe-rAX=0000 BX=0000 CX=0042 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000DS=0B55 ES=0B55 SS=0B65 CS=0B67 IP=0000 NV UP EI PL NZ NA PO NC0B67:0000 B8660B MOV AX,0B66程序分析:我们什么也没执⾏,此时我们在data段定义的数据在哪?在ds:0100H处(原来讲过,程序最开始时ds:00~ds:100H是留给程序与操作系统通讯使⽤的psp内存段,参见书中p92);也就是说我们在ds:100H、0B55:100H或0B65:00处可以看见这些定义的数据。
王爽汇编语⾔答案(1-4)王爽汇编语⾔答案(1-4章)检测点chapter1检测点1.1(1)1个CPU的寻址能⼒为8KB,那么它的地址总线的宽度为13。
(2)1KB的存储器有个存储单元。
存储单元的编号从0000到1023。
(3)1KB的存储器可以存储个8192bit,1024个Byte。
(4)1GB、1MB、1KB分别是2^30 , 2^20 , 2^10Byte。
(5)8080、8088、80286、80386的地址总线宽度分别为16根、20根、24根、32根,则它们的寻址能⼒分别为:64(KB)、1(MB)、16(MB)、4(GB)。
(6)8080、8088、8086、80286、80386的数据总线宽度分别为8根、8根、16根、16根、32根则它们⼀次可以传送的数据为:1(B)、1(B)、2(B)、2(B)、4(B)。
(7)从内存中读取1024字节的数据,8086⾄少要读512次,80386⾄少要读256次。
(8)在存储器中,数据和程序以形式⼆进制存放。
chapter2检测点2.11.写出每条汇编指令执⾏后相关寄存器中的值。
指令寄存器mov ax, 62627AX = F4A3Hmov ah, 31H AX = 31A3Hmov al, 23H AX = 3123Hadd ax, ax AX = 6246Hmov bx, 826CH BX = 826CHmov cx, ax CX = 6246Hmov ax, bx AX = 826CHadd ax, bx AX = 04D8Hmov al, bh AX = 0482Hmov ah, bl AX = 6C82Hadd ah, ah AX = D882Hadd al, 6AX = D888Hadd al, al AX = D810Hmov ax, cx AX = 6246H2. 只能使⽤⽬前学过的汇编指令,最多使⽤4条指令,编程计算2的4次⽅。
王爽《汇编语⾔》实验8
实验8是要求阅读⼀个很奇葩的代码:
assume cs:code
code segment
mov ax, 4c00h
int 21h
start: mov ax, 0
s: nop
nop
;下⾯这段代码主要是把s2的内容复制到s处
mov di, offset s
mov si, offset s2
mov ax, cs:[si]
mov cs:[di], ax
s0: jmp short s
s1: mov ax, 0
int 21h
mov ax, 0
s2: jmp short s1
nop
code ends
end start
先看看开始时代码在内存的存在:
对⽐前⾯的代码,可以看出,程序从start处开始运⾏,然后⼀直运⾏到mov cs:[di], ax处,
此时再查看内存:
发现标签s处的代码已经被更改成为jmp 0000,但是s2处的明明是jmp short s1啊,为什么把代码复制到s处就不同了?
再仔细观察,发现这个指令的机器码EBF6并没有改变,⽽因为jmp short是段内转移,机器码记录的是位移,F6对应的是-8的位移,⽽由于s 刚好处于cs:0008处,运⾏jmp后刚好后移8位,到达最开始的mov ax, 4c00h处,到此运⾏结束。
这⾥对于这个-8的位移控制得⾮常精妙,从s2转移到s1需要-8的位移,⽽从s转移到段头处也刚好是-8的位移,所以程序运⾏成功。
从这⾥可以看出,⼀个精妙的汇编代码⽐⾼级语⾔更有意思^_^。
王爽汇编语言
汇编语言是一种程序设计语言,它被广泛应用于计算机系统和微处理器控制应用中。
汇编语言是计算机编程中最原始和最基础的语言,它可以将指令以机器语言的形式转换成机器所能识别的形式。
王爽汇编语言是一种功能强大的汇编语言,它有很强的功能,能够满足不同的应用需求,具有很高的灵活性。
它可以根据不同的需求自由编程,极大地提高了计算机编程效率。
此外,它还可以支持多种ISA CPU,能够很好地解决多样化的硬件环境和软件环境问题,是强
大的编程语言。
王爽汇编语言的基本功能包括语句编写、指令构建、变量命名、程序标号等功能,它能够满足程序指令的细节要求,在编程与调试方面非常有用。
此外,它还具有取指功能、分支功能、过程功能、循环功能等,为复杂的编程任务提供了很好的支持,能够满足不同类型应用程序的设计需求。
王爽汇编语言拥有众多优点,首先,它是可移植性非常强的,可以在不同的硬件和软件环境中工作;其次,它是极其简洁和易于使用的,它能够简单易行地完成复杂的编程任务;另外,它还具有强大的灵活性,能够根据实际情况调整指令,从而极大地提高编程效率。
在应用层面,王爽汇编语言也有很多优势。
在嵌入式系统设计方面,王爽汇编语言能够很好地管理硬件资源,有效提高系统可靠性;在应用开发方面,它能够快速编写程序,从而更有效地实现业务需求;另外,它在存储器管理、系统维护和修改方面也有显著优势,能够极
大地提高系统工作效率。
总之,王爽汇编语言是一款功能强大的汇编语言,能够满足多种应用需求,是嵌入式系统设计和应用开发的首选语言。
它的功能强大,灵活性高,编程效率高,能够极大地提高计算机编程效率,为复杂的编程任务提供强大的支持。
汇编语⾔(王爽第三版)实验4[bx]和loop的使⽤实验4 [bx]和loop的使⽤1.编程:向内存0:200H~0:23fH依次传送数据0~63(3FH)程序分析:【1】内存0:200H~0:23fH空间与0020:0-0020:3f内存空间是⼀样的,(这个不会?oh!My God!,物理地址是唯⼀的,但逻辑地址组合是多种的。
)【2】因为偏移地址是连续内存单元;我们可以把偏移地址做下⽂章。
bx寄存器存储偏移地址(通过偏移地址的间接访问内存单元,这主要是写⼊的内存单元)。
dx寄存器作为存储中间变量的容器(源数据,常量0-63)来向内存写⼊。
汇编代码如下:assume cs:codecode segmentmov ax,0020Hmov ds,ax ;内存单元的段地址写⼊ds寄存器mov bx,0 ;bx寄存器存放偏移地址,初始化为0mov dx,0 ;dx寄存器存储常量数值0~63mov cx,40H ;这⾥40H==64,cx寄存器存放循环次数。
也可以为64;s: mov [bx],dx ;向[bx]内存单元写⼊dx值inc bx ;累加bxinc dx ;累加dxloop smov ax,4c00Hint 21Hcode endsend2. 向内存0:200H~0:23fH依次传送数据0~63(3FH),9条命令的程序的简化版本(不包括伪代码):程序分析:【1】内存0:200H~0:23fH空间与0020:0-0020:3f内存空间是⼀样的,(这个不会?oh!My God!,物理地址是唯⼀的,但逻辑地址组合是多种的。
)为什么这样?数据0-63是64个连续的数字,0-3fH也是连续的64个编号。
我们可以使⽤⼀个bx变量就把偏移地址和数字的递增都搞定了!修改后的汇编代码如下:assume cs:codecode segmentmov ax,0020Hmov ds,ax ;ds指向0020内存段mov bx,0 ;bx寄存器存放偏移地址,初始化为0,也当做源数据:常量数值mov cx,64 ;循环次数64s: mov [bx],bx ; 向[bx]内存单元写⼊bx数值inc bxloop smov ax,4c00Hint 21Hcode endsend实验体会:1. bx寄存器⼀般⽤作偏移地址的存储,[bx]也就代表了段地址与[bx]组合后指向的内存单元。
第一章检测点1.11) 13(2) 1024,0,1023(3) 8192,1024(4) 2^30,2^20,2^10(5) 64,1,16,4(6) 1,1,2,2,4(7) 512,256(8) 二进制注:符号'^'指求幂运算(如: 2^30指2的30次方)第二章检测点2.1(1)大家做这题的时候一定要注意,要看清楚数制,比如是二进制还是十进制,还是十六进,我当时没注意,做错了!!呵呵!!第一空:F4A3H第二空:31A3H第三空:3123H第四空:6246H第五空:826CH第六空:6246H第七空:826CH第八空:04D8H第九空:0482H第十空:6C82H第十一空:D882H第十二空:D888H第十三空:D810H第十四空:6246H(2)mov ax,2add ax,axadd ax,axadd ax,ax检测点2.2(1)00010H 1000fH(2)0001H 2000H检测点2.3共修改了4次ip 第一次mov ax,bx 第二次是sub ax,ax 第三次是jmp ax 第四次是执行jmp ax 最后ip的值是0 因为ax的值是零!!检测点3.1(1)第一空:2662H第二空:E626H第三空:E626H第四空:2662H第五空:D6E6H第六空:FD48H第七空:2C14H第八空:0000H第九空:00E6H第十空:0000H第十一空:0026H第十二空:000CH注意:ax中存取的是字型数据,高地址存放高字节,低地址存放低字节!!(一定要小心)(2)①写出cpu的执行序列Mov ax,6622Jmp 0ff0:0100Mov ax,2000HMov ds,axMov ax ,[0008]Mov ax,[0002]②指令执行顺序寄存器CSDSAXBX初值2000H 00001000Hmov ax,6622h 2000H 00031000H 6622H 0000jmp 0ff0:0100 1000h00001000H 6622H 0000mov ax,2000h 1000H 00031000H 2000H 0000mov ds,ax 1000H 00052000H 2000H 0000mov ax,[0008] 1000H 00082000HC389H0000mov ax,[0002]1000H000B2000HEA66H0000③数据和程序在计算机中都是以二进制的形式存放的,在区别程序和数据时,关键是看段地址,如果段地址是ds段,说明该内存中存放的是数据,如果段地址是cs段,说明该内存中存放的是程序指令检测点3.2(1)Mov ax,2000HMov ss,axMov sp,0010H(2)Mov ax,1000HMov ss,axMov sp,0000H注意:出栈时和入栈时的顺序,空栈时栈顶指向的是最高端地址!栈满是栈顶指针指向的是最底端地址!!2。
最强大的王爽汇编语言学习环境使用教程一、前言这是采用VMwere Workstation 12 pro虚拟机软件,搭建的MS-DOS学习环境,在windowsXP/8/10及linux中均可以使用,在这个环境中,我集成了CCDOS中文系统,pdos中文系统,使用这些系统,可以进行中文输入与显示。
还集成了,十分著名的汇编语言调试工具TR,它比debug更加强大。
并且集成了适合王爽汇编语言学习的微软汇编语言编译器masm5和dos中最强大的文本编辑器vim73 for DOS,这是一个支持彩色文本格式显示的汇编代码最佳工具,除此我还虚拟了一张1.44M的软盘,方便学习书中软盘操作实验,并且增加了长文件名称处理工具组合longdos等,在这个组合环境中,可以完成王爽汇编语言中的全部实验内容,远比dosbox更加强大易用,能真实的再现实际计算机真实硬件环境。
二、下载安装VMware虚拟机Vmware虚拟机,建议从官方网站下载最新版本进行安装,至少是VMware Workstation 10 以上的版本,不支持之前旧版本。
Vmware官方网站:/cn有关Vmware安装方法,本文不在说明,因为网络上已经有很多详细的安装说明,不懂的朋友可以通过百度,搜索“vmware workstation 12 安装教程”,相信可以找到很好的安装说明。
当软件启动后,如下图所示:三、安装王爽汇编语言学习环境包下载地址:/detail/vs9841/9171719下载的压缩包文件名为:vmware王爽汇编语言学习环境.7z将压缩包解压到D盘根目录,如下图所示:四、使用vmware虚拟机启动学习环境1.首先启动vmware软件,然后点击【文件】 【打开】在弹出的窗口中,找到D盘vmdos71,并选择MS-DOS.vmx文件,然后点击【打开】按钮: 2.当学习环境加载成功后,会在左侧列表中,看到名称为MS-DOS71的虚拟机,我们选择它,然后点击工具栏中的【启动】按钮,就可以启动虚拟机了。
汇编语言》-王爽-完美高清版-零基础汇编语言入门书籍PDF格式
同时按ctrl+要下载的地址既可下载对应的视频
下载地址:/file/f61cb107c8
001第一章- 基础知识01
下载地址:/file/f6806f45b8
002第一章- 基础知识02
下载地址:/file/f6ec42d4d3
003第一章- 基础知识03
下载地址:/file/f6deb05ec4
004第一章-基础知识04
下载地址:/file/f6e51f6838
005第一章- 基础知识05
下载地址:/file/f66edaf8d3
006第二章- 寄存器(CPU工作原理)01
下载地址:/file/f6d07e07b9
007第二章- 寄存器(CPU工作原理)02
下载地址:/file/f6d7f585a8
008第二章- 寄存器(CPU工作原理)03
下载地址:/file/f639d8b3cf
009第二章- 寄存器(CPU工作原理)04
下载地址:/file/f6dcadbde6
010第二章- 寄存器(CPU工作原理)05
下载地址:/file/f6ea3f01c1
011第二章- 寄存器(CPU工作原理)06
下载地址:/file/f65b96a06f
012第二章- 寄存器(CPU工作原理)07
下载地址:/file/f682da085a
013第三章- 寄存器(内存访问)01
下载地址:/file/f6486e698
014第三章- 寄存器(内存访问)02
下载地址:/file/f6b7491d9f
015第三章- 寄存器(内存访问)03
下载地址:/file/f622b7f9a7
016第三章- 寄存器(内存访问)04
下载地址:/file/f64e2424b9
017第三章- 寄存器(内存访问)05
下载地址:/file/f6e5132d4d
018第三章- 寄存器(内存访问)06
下载地址:/file/f655c10e86
019第三章- 寄存器(内存访问)07
下载地址:/file/f6b22e64e6
020第四章- 第一个程序01
下载地址:/file/f6812126a4
021第四章- 第一个程序02
下载地址:/file/f6523e625c
022第四章- 第一个程序03
下载地址:/file/f63e0ccb28
023第五章- [BX]和loop指令01
下载地址:/file/f611e07b8a#
024第五章- [BX]和loop指令02
下载地址:/file/f6e047bccc#
025第五章- [BX]和loop指令03
下载地址:/file/f6d348d781#
026第五章- [BX]和loop指令04
下载地址:/file/f6ada24153#
027第五章- [BX]和loop指令05
下载地址:/file/f64f97518b#
028第五章- [BX]和loop指令06
下载地址:/file/f6f9ba96f8#
029第六章- 包含多个段的程序01
下载地址:/file/f650e06f38#
030第六章- 包含多个段的程序02
下载地址:/file/f683ee5b2a#
031第六章- 包含多个段的程序03
下载地址:/file/f69009bfc2#
032第七章- 更灵活定位内存地址的方法01
下载地址:/file/f6ea427646#
033第七章- 更灵活定位内存地址的方法02
下载地址:/file/f6acdc6b7f#
034第七章- 更灵活定位内存地址的方法03
下载地址:/file/f6c85745d0#
035第七章- 更灵活定位内存地址的方法04
下载地址:/file/f61a26cf12#
36第七章- 更灵活定位内存地址的方法05
下载地址:/file/f631edf5c6#
037第七章- 更灵活定位内存地址的方法06
下载地址:/file/f6b0fa6fb8#
038第八章- 数据处理的两个基本问题01
下载地址:/file/f6f5fe8962#
039第八章- 数据处理的两个基本问题02
下载地址:/file/f6bf975e0#
040第八章- 数据处理的两个基本问题03
下载地址:/file/f6d522784c#
041第八章- 数据处理的两个基本问题04
下载地址:/file/f6b5ac9991# 042实验七寻址方式在结构化数据访问中的应用下载地址:/file/f62e80ced5#
076第十七章_使用BIOS进行键盘输入和磁盘读写02
/file/bhbgrnfz#
077第十七章_使用BIOS进行键盘输入和磁盘读写03
[url=/file/dnsl0kxp#[/sell]/file/dnsl0kxp#[/sell[/url]]。