云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 2019年整理IBM-PC汇编语言程序设计课后习题答案第二版沉美明

2019年整理IBM-PC汇编语言程序设计课后习题答案第二版沉美明

  • 62 次阅读
  • 3 次下载
  • 2025/5/3 11:41:00

-------------------------------------------------------------------------- END START

5.5 试编写一程序,要求能从键盘接收一个个位数N,然后响铃N次(响铃的ASCII码为07)。 答:程序段如下:

BEGIN: MOV AH, 1 ;从键盘输入一个字符的DOS调用 INT 21H SUB AL, ‘0’

JB STOP ;输入字符<‘0’吗? CMP AL, 9 ;输入字符>‘9’吗? JA STOP CBW

MOV CX, AX ;响铃次数N JCXZ STOP

BELL: MOV DL, 07H ;准备响铃

MOV AH, 2 ;显示一个字符的DOS调用,实际为响铃 INT 21H

CALL DELAY100ms ;延时100ms LOOP BELL STOP: RET

5.6 编写程序,将一个包含有20个数据的数组M分成两个数组:正数数组P和负数数组N,并分别把这两个数组中数据的个数显示出来。 答:程序如下:

DSEG SEGMENT COUNT EQU 20

ARRAY DW 20 DUP (?) ;存放数组 COUNT1 DB 0 ;存放正数的个数 ARRAY1 DW 20 DUP (?) ;存放正数 COUNT2 DB 0 ;存放负数的个数 ARRAY2 DW 20 DUP (?) ;存放负数

ZHEN DB 0DH, 0AH, ‘The positive number is:’, ‘$’ ;正数的个数是: FU DB 0DH, 0AH, ‘The negative number is:’, ‘$’ ;负数的个数是: CRLF DB 0DH, 0AH, ‘$’ DSEG ENDS

-------------------------------------------------------------------------- CSEG SEGMENT MAIN PROC FAR

ASSUME CS: CSEG, DS: DSEG START: PUSH DS ;设置返回DOS SUB AX, AX PUSH AX MOV AX, DSEG

MOV DS, AX ;给DS赋值 BEGIN: MOV CX, COUNT LEA BX, ARRAY

LEA SI, ARRAY1 LEA DI, ARRAY2 BEGIN1: MOV AX, [BX] CMP AX, 0 ;是负数码? JS FUSHU

MOV [SI], AX ;是正数,存入正数数组 INC COUNT1 ;正数个数+1 ADD SI, 2 JMP SHORT NEXT

FUSHU: MOV [DI], AX ;是负数,存入负数数组 INC COUNT2 ;负数个数+1 ADD DI, 2 NEXT: ADD BX, 2 LOOP BEGIN1

LEA DX, ZHEN ;显示正数个数 MOV AL, COUNT1

CALL DISPLAY ;调显示子程序 LEA DX, FU ;显示负数个数 MOV AL, COUNT2

CALL DISPLAY ;调显示子程序 RET MAIN ENDP

--------------------------------------------------------------------------

DISPLAY PROC NEAR ;显示子程序 MOV AH, 9 ;显示一个字符串的DOS调用 INT 21H

AAM ;将(AL)中的二进制数转换为二个非压缩BCD码 ADD AH, ‘0’ ;变为0~9的ASCII码 MOV DL, AH

MOV AH, 2 ;显示一个字符的DOS调用 INT 21H

ADD AL, ‘0’ ;变为0~9的ASCII码 MOV DL, AL

MOV AH, 2 ;显示一个字符的DOS调用 INT 21H

LEA DX, CRLF ;显示回车换行

MOV AH, 9 ;显示一个字符串的DOS调用 INT 21H RET

DISPLAY ENDP ;显示子程序结束 CSEG ENDS ;以上定义代码段

-------------------------------------------------------------------------- END START

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

;-------------------------------------------------------------------------- END START 5.5 试编写一程序,要求能从键盘接收一个个位数N,然后响铃N次(响铃的ASCII码为07)。 答:程序段如下: BEGIN: MOV AH, 1 ;从键盘输入一个字符的DOS调用 INT 21H SUB AL, ‘0’ JB STOP ;输入字符‘9’吗? JA STOP CBW MOV CX, AX ;响铃次数N JCXZ STOP BELL: MOV DL, 07H ;准备响铃 MOV AH, 2 ;显示一个字符的DOS调用,实际为响铃 INT 21H

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com