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

我的博客

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

[2023-08-07 20:03] 第 12 章 实验 12  编写 0 号中断的处理程序

实验 12 编写 0 号中断的处理程序

编写 0 号中断的处理程序,使得在除法溢出发生时在屏幕中间显示字符串“divide error!”,然后返回 DOS 操作系统。
要求:仔细跟踪调试,在理解整个过程之前,不要进行后面课程的学习。

具体代码如下:
必须先执行安装 do0 程序的 do0.asm 程序代码,再执行会产生 0 号中断的 test.asm 测试程序代码。

一、不考虑中断处理程序的返回问题

1. 安装 do0 程序的程序代码:

assume cs:code

code segment

; do0 程序(0 号中断处理程序)的安装
sta...
阅读全文 | 评论次数(0) | 浏览次数(107) | 所属类型(课程实验)

[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-02 15:51] 第 11 章 实验 11  编写子程序

实验 11 编写子程序

编写一个子程序,将包含任意字符,以 0 结尾的字符串中的小写字母转变成大写字母,描述如下:
1. 名称:letterc
2. 功能:将以 0 结尾的字符串中的小写字母转变成大写字母
3. 参数:ds:si 指向字符串首地址
注意需要进行转化的是字符串中的小写字母 a~z,而不是其他字符。

完整程序代码如下(Ubuntu 18.04 中的 DOSBox-X 无法运行,Windows 则 DOSBox 和 DOSBox-X 都可以运行):

assume cs:codesg

datasg segment
    db "Beginner's ...
阅读全文 | 评论次数(0) | 浏览次数(107) | 所属类型(课程实验)

[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) | 浏览次数(149) | 所属类型(汇编作业)

[2023-07-21 09:38] 课程设计 1(方法 2)

方法 2

table 段中只设置一组字符串,全部用于存储一年的数据。下一年的数据覆盖前一年的数据字符串。
Ubuntu 18.04 系统安装的 DOSBox-X 无法运行,只能在其 DOSBox 中运行;而 Widows 中则两者都可运行

assume cs:code

data segment
        db '1975','1976','1977','1978','1979','1980','1981','1982','1983'
        db '1984','1985','1986','1987','1988','1989','1990','1991','1992'
        db '...
阅读全文 | 评论次数(0) | 浏览次数(112) | 所属类型(课程设计)

[2023-07-20 18:25] 课程设计 1(方法 1)

方法 1
table 段中设置一年一组字符串,共 21 组字符串。
Ubuntu 18.04 系统的 DOSBox-X 无法运行,只能在其 DOSBox 中运行;而 Widows 中则两者都可运行。

assume cs:code

data segment
        db '1975','1976','1977','1978','1979','1980','1981','1982','1983'
        db '1984','1985','1986','1987','1988','1989','1990','1991','1992'
        db '1993','1994','1995'
        ...
阅读全文 | 评论次数(0) | 浏览次数(119) | 所属类型(课程设计)

[2023-07-07 12:34] 第10章 实验10 编写子程序

实验 10 编写子程序

本次实验将编写 3 个子程序。

一、显示字符串

这一子程序是个通用程序,用于实现显示字符串。程序提供灵活的调用接口,使调用者可以决定显示的位置(行,列)、内容和颜色。

子程序描述:

1. 名称:show_str

2. 功能:在指定的位置,用指定的颜色,显示一个用 0 结束的字符串。

3. 参数:(dh)=行号(取值范围 0~24),(dl)=列号(取值范围 0~79),(cl)=颜色
ds:si 指向字符串的首地址

4. 返回:无

5. 应用举例:在屏幕的 8 行 3 列,用绿色显示 data 段中的字符串。
...
阅读全文 | 评论次数(0) | 浏览次数(125) | 所属类型(课程实验)
页码数(7):  1  2  3  4  5  6  7