![](https://img-blog.csdnimg.cn/f3b369b33b944e779b48622d75ec8e38.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
汇编语言
文章平均质量分 67
本专栏对王爽老师的汇编语言实验进行解答
basketball616
这个作者很懒,什么都没留下…
展开
-
汇编语言(第四版)第九章 检测点9.3 习题解答
分析:loop决定了程序的执行方向,只有当 cx = 1 时,执行 loop 指令才会继续执行到ok程序段上(执行loop指令会先对cx自减1,若cx为0,程序会继续向下执行ok程序段)补全程序,利用 loop 指令,实现在内存 2000H 段中 查找第一个值为 0 的字节,找到后,将它的偏移地址存储在 dx 中。那么,前面若查找的字节为0,则cx必须为1,cx由0转为1的方法使用 inc 指令即可。分析:与检测点.2考察意思差不多,只不过这次考察对 loop 指令的运用。原创 2024-01-06 23:19:27 · 566 阅读 · 0 评论 -
汇编语言(第四版)第九章 检测点9.2 习题解答
不起作用故补0,用jcxz指令判断cx是否为0,若为0则执行 OK 代码段,将偏移地址bx存储到dx中,否则bx+1,检测下一个字节是否为0。补全程序,利用 jcxz 指令,实现在内存 2000H 段中查找第一个值为 0 的字节,找到后,将它的偏移地址存储在 dx 中。基本思路就是从 2000:0000 位置处逐字节遍历,每次取出一个字节放入cx寄存器的低地址处。可以看到在DS:000处的第一个就为0,故执行了一次循环就结束了。如果 cx = 0,转移到标号x处执行;分析:考察对 jcxz 指令的使用。原创 2024-01-06 22:38:11 · 632 阅读 · 0 评论 -
汇编语言(第四版)第九章 检测点9.1 习题解答
因此只需要 bx+1 位置处的值为0即可,即从第二个字节开始后一个字要为0(或者第二、第三个字节为0,或者设置一个双字为0也可以)由于在指令执行过程中CS是始终不变的,因此可以直接把[bx+2]位置处值设置为cs的值,正确的指令为。若要使程序中的jmp指令执行后,CS:IP指向程序的第一条指令,在data段中应该定义哪些数据?需要注意的是,这里不能填 mov [bx],0000h,会无法识别为八位或十六位格式。补全程序,使jmp指令执行后,cs:ip 指向程序的第一条指令。功能:从内存单元处开始存放着。原创 2024-01-06 21:22:42 · 960 阅读 · 0 评论 -
汇编语言(第四版)第八章 实验7 习题解答
汇编语言(第四版)第八章 实验7 习题解答原创 2023-01-20 20:13:45 · 2908 阅读 · 0 评论 -
汇编语言(第四版)实验6 习题解答
(1)将课程中所有讲解过的程序上机调试,用 Debug 跟踪其执行过程,并在过程中进一步理解所讲内容。(2)编程,完成问题 7.9 中的程序原创 2022-12-29 22:30:23 · 901 阅读 · 0 评论 -
汇编语言(第四版)第六章检测点以及实验解答
检测点 6.1(1)下面的程序实现依次使用内存 0:0~0:15 单元中的内容改写程序中的数据,完成程序:assume cs:codesgcodesg segmentdw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987hstart:mov ax,0mov ds,axmov bx,0mov cx,8s:mov ax,[bx] ...原创 2022-01-16 17:17:30 · 2660 阅读 · 1 评论 -
汇编语言(第四版)实验5 习题解答
(1) 将下面的程序编译、连接、用Debug加载、跟踪、然后回答问题assume cs:code,ds:data,ss:stackdata segment dw 0123,0456h,0789h,0abch,0defh,0fedh,0cbah,0987hdata endsstack segment dw 0,0,0,0,0,0,0,0stack endscode segmentstart: mov ax,stack mov ss,ax mov sp.原创 2022-01-16 16:52:03 · 3190 阅读 · 0 评论 -
汇编语言(第四版)检测点 6.1 习题解答
检测点 6.1(1)下面的程序实现依次使用内存 0:0~0:15 单元中的内容改写程序中的数据,完成程序:assume cs:codesgcodesg segmentdw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987hstart:mov ax,0mov ds,axmov bx,0mov cx,8s:mov ax,[bx] ...原创 2021-12-31 11:25:02 · 1640 阅读 · 0 评论 -
汇编语言(第四版)第五章 实验4 习题解答
实验4 [bx] 和 loop的使用(1)编程,向内存 0:200~0:23F 依次传送数据 0~63 (3FH)(2)编程,向内存 0:200~0:23F 依次传送数据 0~63 (3FH),程序中只能使用 9 条指令,9条指令中包括“mov ax,4c00h” 和 “int 21h”。(3)下面的程序的功能是将“mov ax,4c00h”之前的指令复制到内存 0:200 处,补全程序。上机调试,跟踪运行结果。提示:(1)复制的是什么?从哪里到哪里?(2)复制的是什么?有多少个字节原创 2021-12-30 22:55:36 · 3258 阅读 · 1 评论 -
汇编语言(第四版)第四章 实验3 习题解答
实验3 编程、编译、连接、跟踪(1)将下面的程序保存为 t1.asm 文件,将其生成可执行文件 t1.exeassume cs:codesgcodesg 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 21Hc.原创 2021-12-30 14:39:25 · 2517 阅读 · 0 评论 -
汇编语言(第四版)实验2 习题解答
实验 2 用机器指令和汇编指令编程1、预备知识:Debug的使用(略)2、实验任务(1)使用Debug,将下面的程序段写入内存,逐条执行,根据指令执行的实际情况填空(详细图解在实验结果中)特别说明:由于笔者的实验环境是在Win98(虚拟机)上进行实验的,有些同学是在DOSBOX上进行实验的。不同机器的ROM配置可能不相同,因此 FFFF:0000~0000F这一段的信息可能不相同,因此实验结果不尽相同。但只要是正确的操作,答案都是正确的mov ax,ffffmov ds,a.原创 2021-12-23 12:52:08 · 4431 阅读 · 0 评论 -
汇编语言(第四版)第三章检测点以及实验解答
检测点 3.1(1)在Debug中,用“d 0:0 1f” 查看内存,结果如下0000:0000 70 60 F0 30 EF 60 30 E2-00 80 80 12 66 20 22 600000:0010 62 26 E6 D6 CC 2E 3C 3B-AB BA 00 00 26 06 66 88下面的程序执行前,AX=0,BX=0,写出每条汇编指令执行完后相关寄存器中的值指令 寄存器 mov ax,1 ----- mov ds,ax ----- m原创 2021-12-23 12:52:31 · 2790 阅读 · 0 评论 -
汇编语言(第四版)检测点 3.2 习题解答
检测点 3.2(1)补全下面的程序,使其可以将 10000H~1000FH 中的8个字,逆序复制到 20000H~2000FH中。逆序复制的含义如图3.17所示(图中内存里的数据均为假设)分析:先观察代码前半段,将数据段地址指向1000H处 后半段使用压栈指令,将 10000H~1000FH处的数据依次按字压入某一处 因为压栈过程中,栈地址是向下增长的 那么正好可以把栈顶地址设置为 2000FH ,即栈段地址 SS = 2000...原创 2021-12-22 23:39:15 · 3179 阅读 · 3 评论 -
汇编语言(第四版)检测点 3.1 习题解答
检测点 3.1(1)在Debug中,用“d 0:0 1f” 查看内存,结果如下0000:0000 70 60 F0 30 EF 60 30 E2 00 80 80 12 66 20 22 60 0000:0010 62 26 E6 D6 CC 2E 3C 3B AB BA 00 00 26 06 66 8.原创 2021-12-22 22:28:58 · 3491 阅读 · 2 评论 -
汇编语言(第四版)第二章实验以及检测点解答
检测点2.1(1)写出每条汇编指令执行后相关寄存器的值mov ax,62627 AX=F4A3H 62627对应十六进制为F4A3,将对应的十六进制数放入AX(注意这条指令只能通过汇器汇编后编执行,不能直接在dbeug中写入执行)mov ah,31H AX=31A3H 将十六进制数31H送入AX的高8位mov al,23H AX=...原创 2021-12-20 00:28:02 · 2449 阅读 · 0 评论 -
汇编语言(第四版)实验1 习题解答
实验1 查看CPU和内存,用机器指令和汇编指令编程1、预备知识:Debug的使用略2、实验任务(1)使用 Debug,将下面的程序段写入内存,逐条执行,观察每条指令执行后CPU中相关寄存器中内容变化机器码 汇编指令 b8 20 4e mov ax,4E20H 05 16 14 add ax,1416H bb 00 20 mov bx,2000H 01 d8 add ax,bx 89 c3 mov bx,ax 01 d8 a原创 2021-12-20 00:27:28 · 3461 阅读 · 0 评论 -
汇编语言(第四版)检测点2.3 习题解答
检测点2.3下面的3条指令执行后,CPU几次修改IP?都是在什么时候?最后IP中的值是多少? mov ax,bx sub ax,ax jmp ax(1)CPU修改4次IP(2)在读取 mov ax,bx 指令后,IP修改一次 在读取 sub ax,ax指令后,IP修改一次 在读取 jmp ax指令后,IP修改一次 由于 jmp ax 指令用于修改寄存器IP的值,故...原创 2021-12-19 12:59:41 · 1836 阅读 · 0 评论 -
汇编语言(第四版)检测点2.2 习题解答
检测点2.2(1)给定段地址为 0001H,仅通过变化偏移地址寻址,CPU的寻址范围为 00010H 到1000FH 。解析:内存地址 = 段地址(二进制) << 4 + 偏移地址 偏移地址变化范围 0000H ~ FFFFH 故内存地址最小为00010H + 0000H = 00010H 内存地址最大为 00010H + FFFFH = 1000FH(2)有一数据存放...原创 2021-12-19 12:54:50 · 1731 阅读 · 5 评论 -
汇编语言(第四版)检测点2.1 习题解答
检测点2.1(1)写出每条汇编指令执行后相关寄存器的值mov ax,62627 AX=F4A3H 62627对应十六进制为F4A3,将对应的十六进制数放入AX(注意这条指令只能通过汇器汇编后编执行,不能直接在dbeug中写入执行)mov ah,31H AX=31A3H 将十六进制数31H送入AX的高8位mov al,23H AX...原创 2021-12-19 00:18:07 · 1891 阅读 · 0 评论 -
汇编语言(第四版)第一章检测点解答
检测点1、1 (1)1个CPU的寻址能力为8KB,那么它的地址总线宽度为 13 。 (2)1KB的存储器有 1024 个存储单元,存储单元编号从 0 到 1023 。 (3)1KB的存储器可以存储()个bit,()个Byte。 (4)1GB、1MB、1KB分别是()Byte。 (5)8080、8088、80286、80386 的地址总线宽度分别为 16 根、20 根、24 根、32 根,则...原创 2021-12-10 01:13:30 · 627 阅读 · 0 评论 -
汇编语言 实验环境配置
鉴于王爽老师的汇编语言操作大部分在DOS中进行,而笔者的操作系统是WIN10的操作系统,不支持DOS。故决定新建一个虚拟机,在win98环境下进行实验。 注:也可以在WIN10中安装DOSBOX,但由于每次实验都要重新挂载一些工具包和文件,很是麻烦;且DOSBOX的窗口太小,放大后字体太糙太伤眼。由于以上种种不便,笔者决定安装Win98虚拟机,可以直接使用DOS进行调试、汇编、链接,还可以直接使用新文本编辑器编写代码(DOS中的edit的易用度真是一言难尽....) ...原创 2021-12-07 23:53:51 · 978 阅读 · 0 评论