汇编答案(完整版)(6)

2018-12-22 18:48

START: PUSH DS ;设置返回DOS SUB AX, AX PUSH AX

MOV AX, DSEG

MOV DS, AX ;给DS赋值

BEGIN: MOV CX, 100H ;循环计数器 MOV SI, 0

MOV BX, 0 ;和((DI),(BX))的初始值 MOV DI, 0

NEXT: MOV AX, DATA [SI] CWD

ADD BX, AX ;求和

ADC DI, DX ;加上进位位 ADD SI, 2 LOOP NEXT

MOV DX, DI ;将((DI),(BX))中的累加和放入((DX),(AX))中 MOV AX, BX MOV CX, 100H

IDIV CX ;带符号数求平均值,放入(AX)中 MOV BX, 0 MOV SI, 0

COMP: CMP AX, DATA [SI] ;寻找小于平均值的数 JLE NO

INC BX ;小于平均值数的个数+1 NO: ADD SI, 2 LOOP COMP RET

MAIN ENDP

CSEG ENDS ;以上定义代码段

;-------------------------------------------------------------------------- END START

5.17答:程序如下: DSEG SEGMENT MEM DB 4 DUP (?) N DW 2A49H 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 CH, 4 ;循环计数器 MOV CL, 4 MOV AX, N LEA BX, MEM

ROTATE: MOV DL, AL ;从最低四位开始转换为ASCII码 AND DL, 0FH ADD DL, 30H

CMP DL, 3AH ;是0~9吗? JL NEXT

ADD DL, 07H ;是A~F

NEXT: MOV [BX], DL ;转换的ASCII码送入MEM中 INC BX

ROR AX, CL ;准备转换下一位 DEC CH

JNZ ROTATE RET

MAIN ENDP

CSEG ENDS ;以上定义代码段

;-------------------------------------------------------------------------- END START

5.18答:程序如下: DSEG SEGMENT

GRADE DW 30 DUP (?) ;假设已预先存好30名学生的成绩 RANK DW 30 DUP (?) 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 DI, 0

MOV CX, 30 ;外循环计数器 LOOP1: PUSH CX

MOV CX, 30 ;内循环计数器 MOV SI, 0

MOV AX, GRADE [DI]

MOV DX, 1 ;起始名次为第1名

LOOP2: CMP GRADE [SI], AX ;成绩比较 JBE GO_ON

INC DX ;名次+1 GO_ON: ADD SI, 2 LOOP LOOP2 POP CX

MOV RNAK [DI], DX ;名次存入RANK数组 ADD DI, 2 LOOP LOOP1 RET

MAIN ENDP

CSEG ENDS ;以上定义代码段

;-------------------------------------------------------------------------- END START

5.19答:程序如下: DSEG SEGMENT A DW 15 DUP (?) B DW 20 DUP (?) C DW 15 DUP (? ‘) 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 SI, 0 MOV BX, 0

MOV CX, 15 ;外循环计数器 LOOP1: PUSH CX

MOV CX, 20 ;内循环计数器 MOV DI, 0

MOV AX, A [SI] ;取A数组中的一个数

LOOP2: CMP B [DI], AX ;和B数组中的数相等吗? JNE NO

MOV C [BX], AX ;相等存入C数组中 ADD BX, 2 NO: ADD DI, 2 LOOP LOOP2 ADD SI, 2 POP CX

LOOP LOOP1 RET

MAIN ENDP

CSEG ENDS ;以上定义代码段

;-------------------------------------------------------------------------- END START

5.20答:程序如下: DSEG SEGMENT A DW ? B DW ? C DW ? D DW 0

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: CMP A, 0 JE NEXT CMP B, 0 JE NEXT CMP C, 0 JE NEXT MOV AX, A ADD AX, B ADD AX, C MOV D, AX

JMP SHORT EXIT NEXT: MOV A, 0 MOV B, 0 MOV C, 0 EXIT: RET MAIN ENDP

CSEG ENDS ;以上定义代码段

;-------------------------------------------------------------------------- END START

5.21 DSEG SEGMENT ARRAY DW 3 DUP (?) 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: LEA SI, ARRAY

MOV DX, 0 ;(DX)用于存放所求的结果 MOV AX, [SI] MOV BX, [SI+2]

CMP AX, BX ;比较第一和第二两个数是否相等 JNE NEXT1 INC DX

NEXT1: CMP [SI+4], AX ;比较第一和第三两个数是否相等 JNE NEXT2 INC DX

NEXT2: CMP [SI+4], BX ;比较第二和第三两个数是否相等 JNE NUM INC DX

NUM: CMP DX, 3 JL DISP DEC DX

DISP: ADD DL, 30H ;转换为ASCII码 MOV AH, 2 ;显示一个字符 INT 21H RET

MAIN ENDP

CSEG ENDS ;以上定义代码段

;-------------------------------------------------------------------------- END START

5.22 DSEG SEGMENT

ALPHABET DB ?输入的字母字符个数为:‘, ?$‘ NUMBER DB ?输入的数字字符个数为:‘, ?$‘ OTHER DB ?输入的其它字符个数为:‘, ?$‘ 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


汇编答案(完整版)(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:虚拟仪器实验报告

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

马上注册会员

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