汇编语言习题-测验题答案(5)

2019-01-27 11:38

MOV DS,AX MOV AL,X CMP AL,0 JE SUB2 JG SUB1 MOV CL,2

SAL AL,CL

JMP SHORT SUB2 SUB1:ADD AL,3 SAR AL,1 SUB2: MOV Y,AL

MOV AH,4CH

INT 21H CODE ENDS END START

5.28 设X、Y、Z为字节单元。如果X≥0,Z=4X-Y/16,否则,Z=X的绝对值。编程序实现。 程序如下:

DATA SEGMENT X DB 3 Y DB 5 Z DB ? DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV AL,X CMP AL,0 JL SS1 MOV CL,2 SAL AL,CL MOV BL,Y MOV CL,4 SAR BL,CL SUB AL,BL

JMP OUT1

SS1: NEG AL OUT1: MOV Z,AL MOV AH,4CH INT 21H CODE ENDS

END START

5.29 字数组M中有10个数据,分类统计其中正数、负数、0的个数,分别存入POSI、NEGA、ZERO 单元。 程序如下:

DATA1 SEGMENT

M DW 21,-34,32,112,-324,0,76,0,48,50

21

POSI DW ? NEGA DW ? ZERO DW ? DATA1 ENDS

CODE1 SEGMENT ASSUME CS: CODE1,DS:DATA1 START: MOV AX,DATA1 MOV DS,AX MOV CX,10 LEA SI,M

AGAIN: CMP WORD PTR [SI],0 JL LOWER JE EQUAL INC POSI JMP LPP1 LOWER: INC NEGA JMP LPP1 EQUAL: INC ZERO LPP1: ADD SI,2 DEC CX JNZ AGAIN MOV AH,4CH INT 21H CODE1 ENDS END START

5.30 试编写程序,从键盘接收一英文单词,以空格结束,将其存入BUF开始的存储单元中,并在最后加上字符串结束符?$?。 主要程序部分:

LEA BX,BUF LOP: MOV AH,1 INT 21H CMP AL,20H JE NEXT MOV [BX],AL INC BX JMP LOP

NEXT: MOV BYTE PTR[BX],?$?

5.31 编程。将AX寄存器中的16位数分成4组,每组4位,从低到高分别放在AL,BL,CL,DL中。 程序段:

START:MOV AX,1234H MOV BX,AX AND AL,0FH ;4 AND BL,0F0H ;3 AND AH,0FH MOV CL,AH ;2 AND BH,0F0H

22

MOV DL,BH ;1

习题六

6.1 循环指令有哪几种?分别写出指令格式及作用。 6.2 循环指令根据什么判断循环是否结束? 6.3 用转移指令能否构成循环?试举例说明。 6.4 多重循环的循环控制如何实现?

6.5 在多重循环中转移指令的使用要注意哪些问题? 6.6 串处理过程中用到循环了吗?怎么使用的? 6.7 列出学过的串处理指令。

6.8 在串处理过程中,如何找到源串和目的串?

6.9 串处理指令都应和哪些重复前缀配合使用?请举例说明。

6.10 在串处理中,方向标志DF的作用是什么?方向标志如何设置?6.11 写出下列程序段的执行结果。 BUFF DB 10,22,14,6,31 TOTAL DB ? ?? MOV BX,OFFSET BUFF MOV CX,TOTAL-BUFF MOV AL,0 AA1: ADD AL,[BX] INC BX LOOP AA1 MOV TOTAL,AL

6.12 分析下列程序段的功能。 X DB 2,-3,15,0,9,4 ?? LEA BX,X MOV CX,6 MOV AX,0 AA2:MOV AL,[BX] CMP AL,0 JNE NEXT INC AH

NEXT:INC BX

LOOP AA2

6.13 判断下列程序段能否完成给定功能。如有错误,请指出并改正。 (1)统计AL中1的个数。要求AL保持原值。 MOV BL,0

MOV CX,8

BB1:RCL AL,1 JNC NEXT INC BL

23

NEXT:LOOP BB1

(2)在ALPHA中查找字母”T”,找到后退出循环。 ALPHA DB “ERTYU”

??

MOV BX,OFFSET ALPHA MOV CX,5

BB2:CMP [BX],?T? LOOPNE BB2

6.14 源串STRG1和目的串STRG2分别放在数据段和附加段中,请写出含有各种段定义的程序段,完成将STRG1传送到STRG2的功能。

6.15 写出计算Y=1×2+3×4+5×6+7×8+9×10的程序段。

6.16 写程序段。查找CATT表中的字符”@”,找到后将SIGN单元置1,否则SIGN单元置0。 6.17 写程序段。在长度为N的字数组VALUE中统计负数的个数并保存到AX中。 6.18 编程。从键盘输入一个数字,在屏幕上显示出以该数字开始的10个数字串。

6.19 编程。比较两个字符串是否相同,统计并显示出相同的字符个数和不同的字符个数。 6.20 编程。在FOUND字数组中找出最小数存入MIN单元。

6.21 STRI单元存有10个字符的字符串,以0结尾,编程去掉其中的空格符,并将后续字符向前递补。

6.22 某班级30名学生,编程序将全班成绩按升序排序。

6.23 将内存中用ASCII码表示的100以内的十进制数转变为二进制数。十进制数不够3位以20H(空格)补齐。

第六章参考答案

习题六答案:

6.11 累加和TOTAL=83

6.12 循环统计X中0的个数

6.13 (1) 将BB1:RCL AL,1改为BB1:ROL AL,1

(2) 将BB2:CMP [BX],?T? LOOPNE BB2 改为: DEC BX BB2:INC BX

CMP [BX],?T?

LOOPNE BB2

6.15 计算Y=1×2+3×4+5×6+7×8+9×10的程序段答案: MOV AL,1 MOV BL,2 MOV DX,0 MOV CX,5 AA1:MUL BL ADD DX,AX INC BL MOV AL,BL INC BL

24

LOOP AA1

6.16 写程序段。查找CATT表中的字符”@”,找到后将SIGN单元置1,否则SIGN单元置0。 catt db 'asd@ddd' sign db ? ??

mov ax,extra mov es,ax mov sign,0 mov al,'@' lea di,catt cld

mov cx,7 repnz scasb jcxz nee mov sign,1 nee: mov ah,4ch int 21h

6.17 写程序段。在长度为N的字数组VALUE中统计负数的个数并保存到AX中。

value dw 2,-4,-5,3,6,6,-8 n equ ($-value)/2 ;元素个数

??

start: mov ax,data mov ds,ax mov cx,n mov bx,0 mov ax,0 rept1:

mov si,value[bx] ;取出元素 cmp si,0 jge let1 ;≥0 转let1 inc ax ;为负数,ax加1 let1: add bx,2 loop rept1

6.18 从键盘输入一个数字,在屏幕上显示出以该数字开始10个数字串。

CODE SEGMENT ASSUME CS:CODE

START: MOV AH,1

INT 21H MOV CX,10 MOV BL,AL

REPT1: CMP BL,'9'

JLE NEXT SUB BL,10

NEXT: MOV DL,BL

25


汇编语言习题-测验题答案(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:工业机器人课程论文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: