![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
汇编
《汇编语言》王爽第三版习题
CCPigSnail
这个作者很懒,什么都没留下…
展开
-
《汇编语言》——王爽第三版笔记(10-12章)
书籍电子版 提取码: b62a第10章CALL和RET指令ret和retfret用栈中数据修改IP,近转移retf用栈中数据修改CS和IP,远转移用汇编语法来解释:reg = pop IPregf = pop IP pop CScall指令将当前IP或CS和IP压栈转移要注意的是:call指令在执行时,当前IP已经指向了它的后一个的位置依据位移进行转移的call指令call 标号push IPjmp near ptr 标号(16位寄存器)转移的目的地址在原创 2020-12-02 07:43:05 · 513 阅读 · 0 评论 -
《汇编语言》——王爽第三版笔记(13-15章)
书籍电子版 提取码: b62a第13章:int指令CPU的中断可以来自内部和外部。int就是一种重要的内中断int指令int n取中断类型码n标志寄存器入栈,TF、IF设置为0CS、IP入栈IP = 1*n,CS = 1*n+2编写供应用程序调用的中断例程1. 求一个数的平方乘2assume cs:codecode segment start: mov ax, 0 mov es, ax mov di, 200h原创 2020-12-02 07:27:22 · 289 阅读 · 0 评论 -
《汇编语言》——王爽第三版实验10
1. 显示字符串assume cs:code, ds:data, ss:stackdata segment db 'Welcome to masm!', 0data endsstack segment db 16 dup (0)stack endscode segment start: mov dh, 8 mov dl, 3 mov cl, 2 mov ax, data原创 2020-12-02 07:37:21 · 191 阅读 · 0 评论 -
《汇编语言》——王爽第三版实验9
编程:在屏幕中间分别显示绿色、绿底红色、白底蓝色的字符串welcome to masm!’assume cs:code, ds:datadata segment db 'welcome to masm!' db 02h, 24h, 71h ;绿色、绿底红色、白底蓝色data endscode segment start: mov ax, 0b800h mov ds, ax mov bx, 160*14 + 30 ;每原创 2020-12-01 16:50:05 · 232 阅读 · 0 评论 -
《汇编语言》——王爽第三版笔记(7-9章)
第七章:更灵活的定位内存地址的方法and和or指令按位与和按位或,and置0,or置1and ax, 11111110 ;最后一位置0or ax, 00000001 ;最后一位置1关于ASCIIC码一种常用的编码方案,a = 97 = 61H, A = 65 = 41H以字符形式给出数据在汇编程序中用’……'的方式指明数据是以字符的形式给出的,编译器可以将它们转化为相应的ASCII码assume cs:code, ds:datadata segment db 'unIX'd原创 2020-12-01 16:18:52 · 693 阅读 · 0 评论 -
《汇编语言》——王爽第三版实验8
实验8 分析一个奇怪的程序分析下面的程序,在运行前思考:这个程序可以正确返回吗?运行后再思考:为什么是这种结果通过这个程序加深对相关内容的理解。assume cs:codecode segment mov ax, 4c00h int 21h start: mov ax, 0 s: nop nop mov di, offset s mov si,原创 2020-12-01 16:17:45 · 1222 阅读 · 2 评论 -
《汇编语言》——王爽第三版笔记(4-6章)
第四章:第一个程序书籍电子版 提取码: b62a一个源程序从写出到执行的过程编写汇编源程序对源程序进行编译连接编译产生目标文件,windows下生成.obj文件连接生成可执行文件,windows下生成.exe文件执行可执行文件中的程序源程序1. assume cs:codesg ;假设某一段寄存器和程序中的某一个用segment……ends定义的段相关联1. codesg segment ;定义一个段,段名为codesg,这个段从此开始 2. mov ax, 012原创 2020-12-01 15:19:14 · 408 阅读 · 0 评论 -
《汇编语言》——王爽第三版实验5
三个非常重要的实验assume cs:code, ds:data, ss:stackdata segment dw 0123h, 0456h, 0789h, 0abch, 0defh, 0fedh, 0cbah, 0987data endsstack segment dw 0, 0, 0, 0, 0, 0, 0, 0stack endscode segmentstart: mov ax, stack mov ss, ax mov s原创 2020-12-01 15:16:10 · 692 阅读 · 0 评论 -
《汇编语言》——王爽第三版实验4
实验4[bx]和loop的使用编程,向内存0:200~0:23F依次传送数据0~63(3FH),只用9条指令。assume cs:codecode segment mov ax, 20h mov ds, ax mov bx, 0 mov cx, 40h s: mov [bx], bx inc bx loop s mov ax, 4c00h int 21hcode endsend见第1题下面程序原创 2020-12-01 14:20:59 · 694 阅读 · 0 评论 -
《汇编语言》——王爽第三版实验3
assume cs:codesgcodesg segment mov ax, 2000h ;把2000h地址上的值给ax mov ss, ax ;令2000h为栈 mov sp, 0h ;栈长为0 add sp, 10h ;栈长为16 pop ax ;弹出到ax,然后sp+=2 pop bx ;弹出到bx push ax ;入栈 push bx ;入栈 pop ax ;出栈 pop bx ;出栈 ;后面的语句就实.原创 2020-12-01 14:08:05 · 917 阅读 · 0 评论 -
《汇编语言》——王爽第三版实验1Debug的安装(windows10)
下载这两个软件。软件链接 提取码: y1j4将debug.exe放入一个文件夹中,用英文名,不要用中文。我这里放在E盘下的Debug文件夹。然后安装DOSBox软件。安装好后在其文件目录下找到DOSBox 0.74-3 Options.bat打开这个文件,在最后一行加上mount c 你的debug.exe的路径如果界面太小,也是在这个文件下,更改成windowresolution=1280x800(使用时Alt + Enter 变成全屏)运行DOSBox。5.原创 2020-12-01 10:45:56 · 717 阅读 · 0 评论 -
《汇编语言》——王爽第三版检测点
检测点1.11个CPU的寻址能力为8KB,那么它的地址总线的宽度为_13__8KB = 8192Byte = 2^13,到Byte就可以了,可别转成bit。最小寻址为Byte,到了Byte就不能再分了。1KB的存储器有_1024____个存储单元。存储单元的编号从0到10231KB = 1024Byte1KB的存储器可以存储8192个bit,1024个Byte1GB、1MB、1KB分别是2302^{30}230、 2202^{20}220 、2102^{10}210B原创 2020-12-01 09:25:07 · 511 阅读 · 0 评论 -
《汇编语言》——王爽第三版笔记(1-3章)
汇编语言前言在学之前,搞清楚本书的重心:通过学习关键指令来深入理解机器工作的基本原理,培养底层编程意识和思想。读者应具备以下知识:二进制、十六进制的知识一门高级语言基本编程基础(顺序,选择,循环)第一章:基本知识位、字、字长、字节位(bit,b):是计算机中最小的数据单位,一个位的值只可能是0或1字节(Byte,B):8位是一个字节字长:CPU在单位时间可以处理的最大二进制的位数。8位CPU,也就是单位时间内最大可以处理一字节。字(Word,W):计算机处理数据时,一次存取原创 2020-12-01 08:35:10 · 439 阅读 · 0 评论 -
《汇编语言》——王爽第三版实验15安装新的int 9中断例程
安装一个新的int 9中断例程,功能:在DOS下按下“A"键后,除非不再松开,如果松开,就显示满屏的“A",其它键照常。A键的通码为1Eh,断码为1Eh+80h。如果不是A,跳过如果是A没有松手,一直循环判断是否松手松手满屏打印assume cs:codestack segment db 128 dup(0)stack endscode segment start: ;设置栈 mov ax, stack .原创 2020-11-28 20:54:16 · 263 阅读 · 1 评论 -
《汇编语言》——王爽第三版实验14访问CMOS RAM
编程,以"年/月/日 时:分:秒"的格式,显示当前的日期、时间。assume cs:codedata segment db '/','/',' ',':',':'data endscode segment start: mov cx, 3 mov al, 9 mov di, 160*14 ;第14行显示 mov si, 0 s:原创 2020-11-25 13:41:28 · 144 阅读 · 0 评论 -
《汇编语言》——王爽第三版实验13编写、应用中断例程
实验13:编写、应用中断例程1. 编写并安将int 7ch中断例程,功能为显示一个用0结束的字符串,中断例程安将在0:200处。可以分为以下几个步骤进行:将中断例程写入内存0:200中设置中断向量表写相关程序来测试assume cs:codedata segment db "Welcome to masm!", 0data endscode segment start: mov ax, 0 mov es, ax原创 2020-11-24 11:04:35 · 605 阅读 · 0 评论 -
《汇编语言》——王爽第三版实验11编写子程序
编写一个子程序,将包含任意字符,以0结尾的字任串中的小写字母转变成大写字母,描述如下。名称:letterc功能:将以0结尾的字符串中的小写字母转变成大写字母参数:ds:si指向字符串的首地址注意需要要进行转化的是字中的小写字母a~z,而不是其它字符。像高级语言一样,可以用if语句实现,而汇编中的实现方法就是cmp判断两者大小,再用条件转移指令跳转。a的ASCII码 => 97(十进制)z的ASCII码 => 97 + 25 = 122assume cs:code, ds:da.原创 2020-11-20 11:27:01 · 421 阅读 · 0 评论 -
《汇编语言》——王爽第三版实验7
实验七:寻址方式在结构化数据访问中的应用编程,将data段中的数据按如下格式写入到table段中,并计算21年中的人均收入(取整),结果也按照下面的格式保存在table段中。提示,可将data段中的数据看成是多个数组,而将table中的数据看成是一个结构型数据的数组,每个结构型数据中包含多个数据项。可用bx定位每个结构型数据,用idtaa定位数据项,用si定位数组项中的每个元素,对于table中的数据的访问可采用[bx].idata和[bx].idata[si]的寻址方式。可以把年份,总收入,雇员原创 2020-11-13 21:36:37 · 3139 阅读 · 1 评论