汇编语言程序设计P91

来源:百度知道 编辑:UC知道 时间:2024/05/15 16:17:09
试编程实现将BUF1和BUF2两个字单元中的内容相加,若无溢出,将其和保存到SUM单元中;若有溢出,在屏幕上显示“Overflow!”。

DATA SEGMENT
BUF1DW 805AH
BUF2DW 9300H
SUM DW?
BUF DB 'Overflow! $'
DATA sENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV AX,BUF1
ADD AX,BUF2
JO DISP
MOV SUM,AX
JMP DONE
DISP: MOV DX,OFFSET BUF
MOV AX,9
INT 21H
DONE: MOV AH,4CH
INT 21H
CODE: ENDS
END START

问:
1
BUF DB 'Overflow! $'
这句的意思是,将字符串赋给字节变量BUF
但,明明题目说的是,Overflow!,那为什么要加个$呢,有什么用意呢?
2
DATA sENDS
结束指令应该是这样吧,DATA ENDS,那样也行?
3
JO DISP
JO是什么意思?
DISP是什么意思?
这句指令又是什么意思?
4
MOV SUM,AX
把通用寄存器赋AX给字节变量SUM,有这种赋值法吗?
是个什么意思呢,为什么?

说明:很多概念你还没有,如:软中断、DOS功能调用等,所以有些你不容易明白。你的问题大多与此有关。
一、中断
中断的汉语解释是半中间发生阻隔、停顿或故障而断开,而需要人们特别处理,参阅http://www.kerneltravel.net/journal/viii/01.htm.
计算机中断,是指CPU在正常运行程序时,由于内部/外部事件或由程序预先安排的事件,引起CPU中断正在运行的程序,而转到为内部/外部事件或为预先安排的事件服务的程序中去,处理完毕,再返回去执行被暂时中断的程序。
软中断的说法一般是和硬中断对应的,软中断既是由程序(软件)控制响应的中断,使用INT指令进入。硬中断就是由硬件控制发出的中断请求。软中断通常被硬件系统或操作系统用来提供一些系统基本功能,如:显示字符、从键盘读取字符等

二、DOS功能调用
由操作系统DOS提供的一些系统基本功能称作DOS功能调用,主要是21号软中断,为了仅使用者一个中断号,能提供多个功能,DOS规定用AH来指定子功能号。

1
BUF DB 'Overflow! $'
这句的意思是,将字符串赋给字节变量BUF
但,明明题目说的是,Overflow!,那为什么要加个$呢,有什么用意呢?

首先,不是将字符串赋给字节变量BUF,而是定义字节变量BUF,为其分配存储空间,并在对应单元里存放这些字符。
其次,这个$是DOS功能调用中,9号功能(输出一个以$结尾的字符串)的要求。

2
DATA sENDS 结束指令应该是这样吧,DATA ENDS,那样也行?

对,应该是DATA ENDS。

3
JO DISP
JO是什么意思? JUMP IF OVERFLOW,假如溢出跳转
DISP是什么意思? 一个标号,指代某一条指令