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

2011汇编复习 大题部分(3)

来源:网络收集 时间:2019-06-11 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

BYTE 'HI! I will meet you in the Matrix in 3009.' BYTE '$'

BYTE CR,LF,'No more messages for you.','$' 0DH 0AH 20H

PROMPT2 CR LF

EQU EQU

SPACE EQU .CODE

START: MOV AX,@DATA

MOV DS,AX DISP PROMPT1 MOV AH, 7 INT 21H CMP AL, 'Y' JZ OVER DISP PROMPT2 JMP EXIT

OVER: DISP MESSAGE EXIT: MOV AH,4CH

INT 21H END START

第196页例5.27

编写一个程序,判别键盘上输入的字符:若是0~9字符,则显示;若为A~Z或a~z字符,均显示“C”;若是回车字符(其ASCII码味0DH),则结束程序,若为其他字符则不显示,继续等待新的字符输入。

分析:根据自负的ASCII码,需要处理多种情形:00H~29H(等待)30H~39H(显示数字)3A~40H(等待)41H~5AH(显示C)5BH~60H(等待)61H~7AH(显示C)7BH~7FH(等待),所以徐永多分支结构程序解决。 DISP MACRO STR

MOV DX, OFFSET STR MOV AH, 9 INT 21H ENDM

.MODEL SMALL .STACK 64 .DATA PROMPT1

BYTE 'There is a message for you from NEO.'

BYTE SPACE

BYTE 'To read it enter Y','$'

BYTE CR,LF

MESSAGE

BYTE 'HI! I will meet you in the Matrix in 3009.' BYTE '$'

BYTE CR,LF,'No more messages for you.','$' 0DH 0AH 20H

PROMPT2 CR LF

EQU EQU

SPACE EQU .CODE

START: MOV AX,@DATA

MOV DS,AX DISP PROMPT1 MOV AH, 7 INT 21H CMP AL, 'Y' JZ OVER

DISP PROMPT2 JMP EXIT

OVER: DISP MESSAGE EXIT: MOV AH,4CH

INT 21H END START

第201页例5.30

编写程序实现振铃连续发声,直到敲击键盘任意键才停止。

分析:振铃发声可采用02号DOS功能调用显示07H字符(振铃)实现,要检测键盘是否发生按键操作,同时又能连续发生,可调用BIOS的INT16H中断,器调用参数与功能如下: MOV AH,01 INT 16H

返回参数:股国有按键操作ZF=0,否则ZF=1。 .MODEL SMALL .STACK .DATA BEL

EQU 7

BYTE 'TO STOP THE BELL'

MESSAGE .CODE

BYTE ' SOUND PRESS ANY KEY$'

START: MOV AX, @DATA

MOV DS, AX MOV AH, 9

LEA DX, MESSAGE INT 21H

AGAIN: MOV AH, 2

MOV DL, BEL INT 21H MOV AH, 1 INT 16H JZ AGAIN MOV AH, 4CH INT 21H END START

第202页例5.32

在字节数组中找出第一个0数据,找到显示“Y”,否则显示“N”。

分析:为找出第一个0数据,应把0与每一个数据比较,所以程序应采用循环结构。循环结束条件有二:遇到一个0元素,或者扫描了整个数组也没找到,所以使用LOOPNA指令。 .MODEL SMALL .DATA BUF CNT

BYTE 12, 23, 46, 0FEH BYTE 0F1H, 3DH, 0, 23 BYTE 56,73,0FCH, 0, 3 EQU $-BUF

.CODE

START: MOV AX, @DATA

MOV DS, AX MOV CX, CNT MOV DI, -1 NEXT: INC DI CMP BUF[DI], 0

LOOPNZ NEXT

JNZ NFIND

MOV DL, 'Y' MOV AH, 2 INT 21H JMP EXIT

NFIND: MOV DL, 'N'

MOV AH, 2 INT 21H

EXIT: MOV AH, 4CH

INT 21H END START

第209页5.37

在一片内存区中有一数据块,起始地址为BLOCK。要求把其中的负数和非负数分开,分别存放到MINUS_BUF和PLUS_BUF缓冲区中。

分析:取字符串、存字符串可以用相应的串操作指令实现,区分负数和非负数可通过测试符号位解决。难点在于,如果使用串操作指令就一定要用DI作为目的串的指针,但现有两个目的串,那么一个指针如何为两个目的串服务?其中一个解决办法是让DI做当前要访问的目的串的指针,BX作另一个当前不访问的目的串指针;如果访问对象改变,就交换两个指针的内容。 DATA SEGMENT

BLOCK DB 03H,46H,0F4H,0AFH,90H,87H,50H DB 99H,0FFH,40H,77H,88H,0B3H,9EH CNT EQU $-BLOCK

ORG 100H

PLUS_BUF DB CNT DUP(0FFH)

ORG 200H

MINUS_BUF DB CNT DUP(01H) DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA,ES:DATA

START: MOV AX,DATA

MOV DS,AX MOV ES,AX LEA SI, BLOCK LEA DI, PLUS_BUF

LEA BX, MINUS_BUF

MOV CX, CNT CLD

NEXT: LODSB

TEST AL,80H JNZ MINUS STOSB JMP AGAIN

MINUS: XCHG BX,DI

STOSB XCHG BX,DI

AGAIN: LOOP NEXT

MOV AH,4CH INT 21H

CODE ENDS

END START

第220页例5.42

讲16位二进制数转换为十六进制数送屏幕显示。

分析:可使用02H号DOS功能调用(显示字符)来显示十六进制数。而将4位二进制数转换为对应的一位十六进制数的ASCII码的方法一再例5.26中陈述:4位二进制数等于0000~1001时,该数加上30H;四位二进制数等于1010~1111时,该数则要加上37H。程序功能用子程序实现,其中的显示功能通过调用另一子程序实现。 .MOEL SMALL

.STACK 64 .CODE

START: MOV DX,0F120H CALL B2HEX MOV AH,4CH INT 21H

;子程序名:B2HEX

;入口参数:待转换二进制数送入DX ;出口参数:显示4位十六进制数字 B2HEX PROC NEAR PUSH AX PUSH CX MOV CH,4 MOV CL,4 LOP:ROL DX,CL MOV AL,DL AND AL,0FH CMP AL,0AH JB NEXT ADD AL,7 NEXT:ADD AL,30H CALL DISP DEC CH JNZ LOP POP CX POP AX RET B2HEX ENDP ;子程序名:DISP

;入口参数:输出字符的ASCII码送AL ;出口参数:在屏幕显示单个字符 DISP PROC NEAR PUSH DX MOV DL,AL MOV AH,2 INT 21H POP DX RET DISP ENDP END START

第229~232页的第6、9、14、20题。

6. 阅读下列程序,并回答问题(假设DS=00BFH): .MODEL SMALL .DATA ORG 1000H NUM BYTE 48H,8DH RES BYTE ? .STACK 100 .CODE

START: MOV AX, @DATA MOV DS,AX

MOV SP, 64H LEA BX, NUM MOV AL, [BX] SUB AL, [BX+1] PUSH AX PUSHF ADD AL,AL POPF POP AX MOV [BX+2],AL MOV AH,4CH INT 21H END START 问题:

(1) 分析程序运行后,存储器中数据段中数据存放情况,填入具体数据; (2) 分析最后标志位OF、SF、ZF、AF、PF和CF的状态(其它各位假定为0); (3) 分析堆栈进栈情况,进栈后,SP是多少? 堆栈中填入具体数据。 OF、SF、CF、AF、PF均为1,ZF=0;SP=62H

9. 阅读程序: .MODEL SMALL .DATA

AA DB 0A7H, 89H, 23H, 8EH BB DB 0B0H, 87H, 94H, 62H CC DB 5 DUP(?) COUNT EQU 0004H .CODE

START: MOV AX, @DATA MOV DS, AX MOV ES, AX CLD LEA DI, AA LEA SI, BB AND AX, AX

MOV BX, OFFSET CC+4 MOV CX, COUNT MUL1: MOV AL, [DI+3] ADC AL, [SI+3] MOV [BX], AL DEC DI DEC SI DEC BX DEC CX JNZ MUL1 MOV AL, 0 RCL AL, 1 MOV [BX], AL

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库2011汇编复习 大题部分(3)在线全文阅读。

2011汇编复习 大题部分(3).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/656022.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: