微机原理与接口技术第四章汇编题2531.docx

上传人:b****4 文档编号:856714 上传时间:2022-10-13 格式:DOCX 页数:5 大小:16.13KB
下载 相关 举报
微机原理与接口技术第四章汇编题2531.docx_第1页
第1页 / 共5页
微机原理与接口技术第四章汇编题2531.docx_第2页
第2页 / 共5页
微机原理与接口技术第四章汇编题2531.docx_第3页
第3页 / 共5页
微机原理与接口技术第四章汇编题2531.docx_第4页
第4页 / 共5页
微机原理与接口技术第四章汇编题2531.docx_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

微机原理与接口技术第四章汇编题2531.docx

《微机原理与接口技术第四章汇编题2531.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术第四章汇编题2531.docx(5页珍藏版)》请在冰豆网上搜索。

微机原理与接口技术第四章汇编题2531.docx

微机原理与接口技术第四章汇编题2531

25.试编制一个程序把AX中的16进制数转换为ASCII码,并将对应的ASCII码依次存放到MEM数组中的四个字节中。

例如,当(AX)=2A49H时,程序执行完后,MEM中的4个字节内容为39H,34H,41H,32H。

DATASSEGMENT;数据段

ADDRDB4DDUP(?

DB'$'

DATASENDS

CODESSEGMENT;代码段

ASSUMECS:

CODES,DS:

DATAS

START:

MOVAX,DATAS;初始化

MOVDS,AX

MOVAX,066FFH;此处可以设置ax的数值.为了验证.在这里我就将ax设置为66FF

;{本程序段将ax中的十六进制数值转换为asccl码且传送给addr数组

MOVDX,AX;将ax保护起

;①转换ah的高四位

ANDAH,11110000B

MOVCL,04H

SHRAH,CL

ADDAH,30H;将其转换为相对的ascll码

CMPAH,39H;判断如果不大于39则证明其位数字继续转换其他的,否则证明是字母还要加7h

JNASHUZI

ADDAH,07H

SHUZI:

MOV[ADDR+0],AH

;②转换ah的低四位

MOVAX,DX;将之前保护的ax回送

ANDAH,00001111B

ADDAH,30H;将其转换为相对的ascll码

CMPAH,39H;判断如果不大于39则证明其位数字继续转换其他的,否则证明是字母还要加7h

JNASHUZI2

ADDAH,07H

SHUZI2:

MOV[ADDR+1],AH

;③转换al的高四位

MOVAX,DX;将之前保护的ax回送

ANDAL,11110000B

MOVCL,04H

SHRAL,CL

ADDAL,30H;将其转换为相对的ascll码

CMPAL,39H;判断如果不大于39则证明其位数字继续转换其他的,否则证明是字母还要加7h

JNASHUZI3

ADDAL,07H

SHUZI3:

MOV[ADDR+2],AL

;④转换al的低四位

MOVAX,DX;将之前保护的ax回送

ANDAL,00001111B

ADDAL,30H;将其转换为相对的ascll码

CMPAL,39H;判断如果不大于39则证明其位数字继续转换其他的,否则证明是字母还要加7h

JNASHUZI4

ADDAL,07H

SHUZI4:

MOV[ADDR+3],AL;}转换完毕

;向屏幕输出所转换好的ascll码

LEADX,ADDR

MOVAH,09H

INT21H

MOVAH,07H;任意按键结束

INT21H

MOVAX,4C00H;退出程序

INT21H

CODESENDS

ENDSTART

 

27.已知数组A包含15个互不相等的整数,数组B包含20个互不相等的整数。

试编制一程序把既在A中又在B中出现的整数存放于数组C中

CodeSegment

AssumeCS:

Code,DS:

Code

Adb10DUP(?

Bdb20DUP(?

Start:

pushcs

popds

pushcs

popes

leasi,AA

leadi,CC

movcx,15

cld

Load_AL:

pushcx

leabx,BB

movcx,20

lodsb

Compare:

cmpal,[bx]

jnz$+3

stosb

incbx

loopCompare

popcx

loopLoad_AL

movah,4ch;结束程序

int21h

CCdb?

CodeENDS

ENDStart

 

29.试编写一程序,要求比较数组ARRAY中的三个16位补码数,并根据比较结果在终端上显示如下信息:

(1)如果三个数都不相等则显示0;

(2)如果三个数有二个数相等则显示1;

(3)如果三个数都相等则显示2。

DSEGSEGMENT

ARRAYDW3DUP(?

DSEGENDS

;---------------------

DSEGSEGMENT

MAINPROCFAR

ASSUMECS:

CSEG,DS:

DSEG

START:

PUSHDS;设置返回DOS

SUBAX,AX

PUSHAX

MOVAX,DSEG

MOVDS,AX;给DS赋值

BEGIN:

LEASI,ARRAY

MOVDX,0;(DX)用于存放所求的结果

MOVAX,[SI]

MOVBX,[SI+2]

CMPAX,BX;比较第一和第二两个数是否相等

JNENEXT1

INCDX

NEXT1:

CMP[SI+4],AX;比较第一和第三两个数是否相等

JNENEXT2

INCDX

NEXT2:

CMP[SI+4],BX;比较第二和第三两个数是否相等

JNENUM

INCDX

NUM:

CMPDX,3

JLDISP

DECDX

DISP:

ADDDL,30H;转换为ASCII码

MOVAH,2;显示一个字符

INT21H

RET

MAINENDP

CSEGENDS;以上定义代码段

;------------------------------------------

ENDSTART

 

31.已定义了两个整数变量A和B,试编写程序完成下列功能:

(1)若两个数中有一个是奇数,则将奇数存入A中,偶数存入B中;

(2)若两个数中均为奇数,则将两数加1后存回原变量;

(3)若两个数中均为偶数,则两个变量均不改变。

 

DATASEGMENT

ADB23H

BDB48H

DATASEGMENT

CODESEGMENT

START

MOVAL,A

MOVBL,B

TESTAL,01H

IFZERO?

;AL为偶数

TESTBL,01H

MOVA,BL;A为偶数,B为奇数

MOVB,AL

_PARITY:

;两个均为偶数不做改变

ELSE;AL为奇数

TESTBL,01H

JZB_IS_PARITY

INCAL

INCBL

MOVA,AL

MOVB,BL

B_IS_PARITY:

ENDIF

END

JZ_PARITY

33.下面的程序段有错吗?

若有,请指出错误。

CRAYPROC

PUSHAX

ADDAX,BX

RET

ENDPCRAY

有错:

最后一行写反了.应为:

CRAYENDP

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1