2 yzy4829229 yzy4829229 于 2015.07.10 10:00 提问

关于DOS中断的一个问题

在学习到王爽汇编语言的第13章最后实验题的时候,有一个这样的实验题。

题目:下面的程序,分别在屏幕的第2,4,6,8行显示4句英文诗,补全程序。
程序如下:

 assume cs:code

code segment

s1: db 'Good,better,best,','$'
s2: db 'Never let it rest,','$'
s3: db 'Till good is better,','$'
s4: db 'And better,best.','$'
s:      dw offset s1,offset s2,offset s3,offset s4
row:    db 2,4,6,8

start:      mov ax,cs
            mov ds,ax
            mov bx,offset s 
            mov si,offset row 
            mov cx,4

    ok: mov bh,0
            mov dh,———
            mov di,0
            mov ah,2
            int 10h

            mov dx,————
            mov ah,9
            int 21h
            ————
            ————
            loop ok 


            mov ax,4c00h
            int 21h

code ends 

end start

我的填空是:

 assume cs:code

code segment

s1: db 'Good,better,best,','$'
s2: db 'Never let it rest,','$'
s3: db 'Till good is better,','$'
s4: db 'And better,best.','$'
s:      dw offset s1,offset s2,offset s3,offset s4
row:    db 2,4,6,8

start:      mov ax,cs
            mov ds,ax
            mov bx,offset s 
            mov si,offset row 
            mov cx,4

    ok: mov bh,0
            mov dh,[si]
            mov di,0
            mov ah,2
            int 10h

            mov dx,[bx]
            mov ah,9
            int 21h
            add bx,2
            inc si
            loop ok 


            mov ax,4c00h
            int 21h

code ends 

end start

我不知道这个程序是否能够满足条件,但是在编译的时候,就遇到了问题,这个是深恶原因呢?
图片说明

2个回答

Tiger_Zhao
Tiger_Zhao   Rxr 2015.07.13 13:52

db要放在DATAS SEGMENT里面吧。

lm_whales
lm_whales   Rxr 2015.07.18 23:09

db 不需要标号符号 :
把标号语句,改成变量定义语句试试
。。。。。。。。。。。。。。。。。
s1: 等语句改为如下形式看一看
s1 db 'Good,better,best,','$'
s2 db 'Never let it rest,','$'
s3 db 'Till good is better,','$'
s4 db 'And better,best.','$'
s dw offset s1,offset s2,offset s3,offset s4
row db 2,4,6,8

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
BIOS中断和DOS中断
<br />http://course.cug.edu.cn/21cn/%CE%A2%D0%CD%BC%C6%CB%E3%BB%FA%BC%BC%CA%F5/content/masm/chapter4/4-4/4-4-0.htm<br />   任何程序的运行均离不开一定的硬件环境和软件环境。 基本硬件环境包括CPU、存储器、I/O设备(键盘、磁盘、打印机、显示卡等),关于CPU和存储器,已经作了一些了解。<br />从原理上讲,使用IN/OUT指令可以控制任何I/O设备。以打印机为例,使用IN指令可以读入
关于线程的30个问题
1、线程和进程的区别 2、实现线程有哪几种方式? 3、线程有哪几种状态?它们之间如何流转的? 4、线程中的start()和run()方法有什么区别? 5、怎么终止一个线程?如何优雅地终止线程? 6、ThreadLocal在多线程中扮演什么角色? 7、线程中的wait()和sleep()方法有什么区别? 8、多线程同步有哪几种方法
汇编 DOS的中断调用 INT 21H
DOS系统功能调用这个汇编指令是用于提供DOS系统功能调用。它是由DOS提供的一组实现特殊功能的子程序供程序员在编写自己的程序时调用,以减轻编程的工作量。 分两种,DOS系统功能调用和BIOS中断调用。 链接里都是一些常用的内容,大家可以自己去百度,一定比我这里给出的全面很多,有那种DOS系统功能调用表。调用步骤大致 (1)系统功能号送到寄存器AH中; (2)入口参数送到指定的寄存器中; (3)
BIOS和DOS中断大全
DOS中断:1、字符功能调用类(Character-Oriented Function)01H、07H和08H —从标准输入设备输入字符02H —字符输出03H —辅助设备的输入04H —辅助设备的输出05H —打印输出06H —控制台输入/输出09H —显示字符串0AH — 键盘缓冲输入0BH —检测输入状态0CH —清输入缓冲区的输入功能(1)、功能01H、07H和08H 功能描述:从标准
中断向量表(DOS 汇编)
中断向量表 关于DOS编程的256个中断
170429 汇编-BIOS和DOS的中断例程
1625-5 王子昂 总结《2017年4月28日》 【连续第209天总结】 A. 汇编语言 第十三章 100% B. int指令的格式为 int n 其中n为中断类型码,作用是引发中断过程 BIOS和DOS也提供了一套中断例程。 从操作系统的角度来看,DOS的中断例程就是操作系统向程序员提供的编程资源。 而和硬件设备相关的DOS中断例程中,一般都调用了BIOS的中断例程 安装
汇编语言第十三章-int中断
本博文系列参考自>第三版,作者:王爽 本博文将继续介绍另外一种内中断类型,int中断。 13.1 int中断 int指令格式为:int n,其中n为中断类型码。 int n中断过程如下: 取中断类型码n 标志寄存器入栈,TF=0,IF=0 CS,IP入栈 (CS)=(n*4),(IP)=(n*4+2)   上面的代码段运行后将在屏幕中间显示一个’!’,然后再
DOS下的int 10h中断
INT 10H中断
BIOS和DOS所提供的中断例程
通常在系统板的ROM中存放着一套程序,称为BIOS(基本输入输出系统),BIOS中主要是包含了以下几部分内容 1、硬件系统的检测和初始化程序 2、外部中断和内部中断的中断例程 3、用于对硬件设备进行I/O操作的中断例程 4、其他和硬件相关的中断例程 操作系统DOS提供了中断例程,其实从操作系统的角度来看,DOS的中断例程就是操作系统向程序员提供的编程资源 BIOS和DOS在所提供...
[Hb-XV] 安装新的int 9中断例程
《汇编语言·第三版》--王爽 1 问题 安装一个新的int 9中断例程,功能:在DOS下,按下“A”键后,除非不再松开,如果松开,就显示满屏幕的“A”,其它的键照常处理。 提示,按下一个键时产生的扫描码称为通码,松开一个键产生的扫面码称为断码。断码 = 通码 + 80h。 2 分析 键盘输入到达60h端口后,就会引发9号中断,CPU则去执行int 9中断例程。