汇编网首页登录博客注册
unixandlinux的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
最新评论
最新留言
好友圈
友情链接

[2023-08-26 11:36] 第 17 章 检测点 17.1

检测点 17.1

“在 int 16h 中断例程中,一定有设置 IF=1 的指令。”这种说法对吗?
答:正确。int 16h 中断例程的功能是读取键盘缓冲区的信息。当执行该中断例程时,如果键盘缓冲区为空,则该中断例程会处于循环执行状态(即循环检测键盘缓冲区是否存在可读取信息)以等待键盘缓冲区被写入信息;由于引发 int 16h 中断过程中,硬件已经自动执行了 IF=0,因此如果 int 16h 中断例程中没有设置 IF=1 的指令,那么一旦键盘缓冲区在执行 int 16h 中断例程之前的状态为空,使得 int 16h 中断例程处于等待键盘输入的状态,IF=0 会导致 CPU 无法响应 ...
阅读全文 | 评论次数(0) | 浏览次数(293) | 所属类型(汇编作业)

[2023-08-14 18:42] 第 14 章 检测点 14.2

检测点 14.2

编程,用加法和移位指令计算 (ax)=(ax)*10。提示,(ax)*10=(ax)*2+(ax)*8。

具体代码如下:

1. 说明:AX 寄存器存储的初始数据不得超过 6553,因为 6553×10=65530 是 16 位寄存器 AX 能进行乘 10 计算后所存储的最大值,超过后就会由于 AX 寄存器的存储容量不足而导致溢出,所得的结果将是错误的。例如若计算 6554×10,结果为 65540,该数值在 AX 寄存器中实际存储的是其补码,即十进制的数值 4,因为 AX 寄存器最大能存储的无符号数为 65535。本程序代码只有计算功能,需通过 Debug ...
阅读全文 | 评论次数(0) | 浏览次数(412) | 所属类型(汇编作业)

[2023-08-13 18:22] 第 14 章 检测点 14.1

检测点 14.1

编程:读、写 CMOS RAM 的 2 号单元的内容
说明:1. CMOS RAM 芯片的端口是 8-bits 端口,要通过 AL 寄存器进行读写操作。
   2. CMOS RAM 芯片端口的地址是 70H 和 71H,地址值范围在 255(0FFh)以内,所以在 int、out 指令中使用 CMOS RAM 芯片端口时,直接书写其端口号 70H 或 71H。
   3. CMOS RAM 的 2 号单元存储的是系统时间的分钟数:如果当前系统时间是 17:32,则 2 号单元存储的数据就是 32H —— 注意,不会将分钟数转换为 16 进制数,而是直接的 16 ...
阅读全文 | 评论次数(0) | 浏览次数(236) | 所属类型(汇编作业)

[2023-08-10 09:15] 第 13 章 检测点 13.1

检测点 13.1


(1) 在上面的内容中,用 7ch 中断例程实现 loop 的功能,则上面的 7ch 中断例程所能进行的最大转移位移是多少?
答:由于存储位移数据的是 16 位的 BX 寄存器,而压栈后,栈元素也是 16 位的字内存单元,16 位存储空间所能存储的有符号数范围是 -32768~32767,因此最大位移就是 32767 字节(Byte)和 -32768 字节(Byte)。

(2) 实现用 7ch 中断例程完成“jmp near ptr s”指令的功能,用 BX 寄存器向中断例程传送转移的位移值 —— (bx) 成为调用中断例程的参数。

应用举例:在屏幕的...
阅读全文 | 评论次数(0) | 浏览次数(175) | 所属类型(汇编作业)

[2023-08-03 10:39] 第 12 章 检测点 12.1

检测点 12.1

(1) 用 Debug 查看内存,情况如下:
0000:0000  68 10 A7 00 8B 01 70 00-16 00 9D 03 8B 01 70 00
则 3 号中断源对应的中断处理程序的入口地址为:0070:018B
(2) 存储 N 号中断源对应的中断处理程序入口的偏移地址的内存单元的地址为:0000:(N×4)
存储 N 号中断源对应的中断处理程序入口的段地址的内存单元的地址为:0000:(N×4+2)

中断号  偏移地址  段地址  示例实际存储内容(以本题(1)为例)
 0     0~1    2~3      00A7:1068...
阅读全文 | 评论次数(0) | 浏览次数(111) | 所属类型(汇编作业)

[2023-08-01 17:30] 第 11 章 检测点 11.4

检测点 11.4

下面的程序执行后,(ax)=?
mov ax,0
push ax
popf
mov ax,0FFF0h
add ax,0010h
pushf
pop ax
and al,11000101B
and ah,00001000B

分析:
1. 观察指令
mov ax,0
push ax
popf
这三条指令使得 flag 各位均为 0。
2. 观察指令
mov ax,0FFF0h
add ax,0010h
pushf
(ax)=FFF0h+0010h=(1)0000h,也即 (ax)=-16+16=0,这影响了 flag 的 OF、...
阅读全文 | 评论次数(0) | 浏览次数(113) | 所属类型(汇编作业)

[2023-08-01 09:36] 第 11 章 检测点 11.3

检测点 11.3

(1) 补全下面的程序,统计 F000:0 处 32 个字节中,大小在 [32,128] 的数据的个数。
        mov ax,0f000h
        mov ds,ax
        mov bx,0
        mov dx,0    ; 将统计的结果存储在 DX 寄存器中
        mov cx,32
s:        mov al,[bx]
        cmp al,32
        jb s0    ; 小于 32 则跳至 s0 标号处执行,以进入下一个循环或结束循环
        cmp al,128
        ja s0     ; 大于 128 则跳至 s0 标号处执行,以进入下一个循环或结束循环
...
阅读全文 | 评论次数(0) | 浏览次数(106) | 所属类型(汇编作业)

[2023-07-27 11:36] 第11章 检测点 11.2

检测点 11.2

写出下面每条指令执行后,ZF、PF、SF、CF、OF 等标志位的值。
        CF  OF  SF  ZF  PF
sub al,al   0   0  0   1  1
结果 (al)=00000000B:进位 0,“假”;溢出 0,“假”;符号非负,“假”;零位“真”;“偶个 1”,“真”。
        CF  OF  SF  ZF  PF
mov al,10H   0  0   0  1   1
mov 为传送指令,(al)=10h,flag 寄存器保持原值不变。
        CF  OF  SF  ZF  PF
add al,90...
阅读全文 | 评论次数(0) | 浏览次数(111) | 所属类型(汇编作业)

[2023-07-27 08:09] 第11章 检测点 11.1

检测点 11.1

写出下面每条指令执行后,ZF、PF、SF 等标志位的值。
sub al,al  ZF=1 PF=1 SF=0
结果为 00000000B,因此 ZF=1(零标志为真),PF=1(含 0 个 1,即偶数个 1,奇偶标志为真),SF=0(结果为非负数,负数标志为假)。
mov al,1  ZF=1 PF=1 SF=0
mov 指令为传送指令,不影响标志寄存器的值,因此标志寄存器保持原来的数据不变。
因此,虽然结果为 00000001B,但仍然是 ZF=1(零标志为真),PF=1(含 0 个 1,即偶数个 1,奇偶标志为真),SF=0(结果为非负数,负数标志为假)。...
阅读全文 | 评论次数(0) | 浏览次数(148) | 所属类型(汇编作业)

[2023-06-27 18:53] 第10章 检测点 10.5

检测点 10.5


(1) 下面的程序执行后,ax 中的数值为多少?(注意:用 call 指令的原理来分析结果,而不要在 Debug 中单步跟踪来验证结论;因为对于此程序,在 Debug 中单步跟踪的结果不能代表 CPU 的实际执行结果。)

assume cs:code

stack segment
  dw 8 dup (0)
stack ends

code segment

start:     mov ax,stack
        mov ss,ax
        mov sp,16
        mov ds,ax
        mov ax,0
        call word ptr ds:[0E...
阅读全文 | 评论次数(0) | 浏览次数(129) | 所属类型(汇编作业)
页码数(3):  1  2  3