第一范文网 - 专业文章范例文档资料分享平台

微型计算机原理及应用技术-第二版(朱金钧版).

来源:用户分享 时间:2025/5/15 11:13:47 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

MOV [M3],AX ENDM

(2) 设8位寄存器存储的是无符号数,最高位是百位。宏定义的代码段如下:

ADDM MACRO Y ;形式参数Y代表一个8位寄存器

MOV AL,Y XOR AH,AH MOV DL,100 DIV DL

ADD AL,30H MOV DL,AL

MOV AL,AH ;存余数 MOV AH,2 INT 21H ;显示百位数 XOR AH,AH MOV DL,10 DIV DL

ADD AL,30H MOV DL,AL

MOV AL,AH ;存余数 MOV AH,2 INT 21H ;显示十位数 ADD AL,30H MOV DL,AL MOV AH,2

INT 21H ;显示个位数 ENDM

7. 对下面程序进行注释,并说明其功能。

DATA SEGMENT A DB ‘123ABC’ DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA START: MOV AX,DATA

MOV DS,AX LEA BX,A MOV CX,6 MOV AH,2 LP: MOV AL,[BX]

XCHG AL,DL INC BX INT 21H LOOP LP MOV AH,4CH INT 21H CODE ENDS

END START

【解】注释如下:

DATA SEGMENT ;数据段开始 A DB ‘123ABC’ DATA ENDS ;数据段结束 CODE SEGMENT ;代码段开始

ASSUME CS:CODE,DS:DATA START: MOV AX,DATA

MOV DS,AX ;装填数据段 LEA BX,A ;传送变量的地址 MOV CX,6 MOV AH,2 LP: MOV AL,[BX]

XCHG AL,DL INC BX

INT 21H ;系统功能调用,功能号:2 ,

;将字符1、2、3、“A”、“B”、“C”送屏幕显示

LOOP LP ;CX=6,循环6次 MOV AH,4CH INT 21H ;返回DOS CODE ENDS ;代码段结束

END START ;源程序结束

程序的功能:显示从A开始的6个字节单元中的字符。 8. 编程将CX、DX作为双字联合右移四位(设CX为高16位),最高4位送入全1。

【解】程序代码如下:

CODE SEGMENT ;代码段开始

ASSUME CS:CODE START: MOV AX,CX

MOV CX,4

LP: SHR AX,1

RCR DX,1 LOOP LP

OR AX,0F000H MOV CX,AX MOV AH,4CH

INT 21H ;返回DOS CODE ENDS ;代码段结束

END START ;源程序结束

9. 编程把从A单元开始存放的3个单字节无符号数按递增顺序排序后存回原处。 【解】程序代码如下:

DATA SEGMENT ;数据段开始 A DB 3 DUP(?) DATA ENDS ;数据段结束 CODE SEGMENT ;代码段开始

ASSUME CS:CODE,DS:DATA START: MOV AX,DATA

MOV DS,AX ;装填数据段 LEA BX,A ;传送变量的地址 MOV AL,[BX] CMP AL,[BX+1]

JAE EX1 ;[BX]>[BX+1],交换 CMP2: CMP AL,[BX+2]

JAE EX2 ;[BX]>[BX+2],交换 JMP CONT1 EX1: XCHG AL,[BX+1]

XCHG AL,[BX] MOV AL,[BX] JMP CMP2 EX2: XCHG AL,[BX+2]

XCHG AL,[BX] MOV AL,[BX] CONT1: MOV AL,[BX+1]

CMP AL,[BX+2] JB CONT2

XCHG AL,[BX+2] ;[BX+1]>[BX+2],交换 XCHG AL,[BX+1] CONT2: MOV AH,4CH

INT 21H ;返回DOS CODE ENDS ;代码段结束

END START ;源程序结束

10. 试编写一段程序比较从ARRAY开始存放的3个16位有符号数。根据比较结果置FLAG标志。

(1) 如果3个数都不相等,置FLAG为0。

(2) 如果3个数中有2个数相等,置FLAG为1。 (3) 如果3个数都相等,置FLAG为2。 【解】程序代码如下:

DATA SEGMENT ;数据段开始 ARRAY DW 3 DUP(?) FLAG DB ? DATA ENDS ;数据段结束 CODE SEGMENT ;代码段开始

ASSUME CS:CODE,DS:DATA START: MOV AX,DATA

MOV DS,AX ;装填数据段 LEA BX,ARRAY ;传送变量的地址 MOV AX,[BX] CMP AX,[BX+2]

JE EQU1 ; [BX]=[BX+2],执行MOV DL,1 MOV DL,0 JMP CONT1 EQU1: MOV DL,1

CONT1: CMP AX,[BX+4]

JE EQU2 ; [BX]=[BX+4] ,DL+1 JMP CONT2 EQU2: ADD DL,1 CONT2: MOV AX,[BX+2]

CMP AX,[BX+4] JE EQU3 JMP CONT3 EQU3: ADD DL,1 CONT3: CMP DL,3

JNZ EQU4 ; [BX]=[BX+2]=[BX+4] ,DL-1 SUB DL,1

EQU4: MOV FLAG,DL

MOV AH,4CH INT 21H ;返回DOS CODE ENDS ;代码段结束

END START ;源程序结束

微型计算机原理及应用技术-第二版(朱金钧版)..doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c4l1l14y71y6d7jn4l8uv58u602x7bw012lt_8.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top