admin 管理员组

文章数量: 1086019


2024年4月21日发(作者:html怎么写弹窗)

第4章 汇编语言程序设计

1. 已知在BUF的起始处保存有N个字符的ASCII码,编写汇编语言程序实现,将这组字

符串传送到缓冲区BUFR中,并且使字符串的顺序与原来的顺序相反。

解:BUF

BUFR

MOV CX, N

LEA SI, BUF

LEA DI, BUFR

ADD DI,CX

DEC DI

L1:

MOV AL,[SI]

MOV [DI],AL

INC SI

DEC DI

LOOP L1

2. 利用移位、传送和相加指令实现AX的内容扩大10倍。

解:将扩大后的结果放在DX:AX中,注意到10×AX=8×AX+2×AX。

XOR

SHL

RCL

DX,DX

AX, 1

DX, 1

DB "BONJOUR_BELLE"

DB 100 DUP(?)

MOV BX,AX

MOV

SHL

RCL

SHL

RCL

CX,DX

AX, 1

DX, 1

AX, 1

DX, 1

ADD

ADC

AX, BX

DX, CX

3. 在缓冲区VAR中连续存放着3个16位的无符号数,编写程序实现将其按递增关系排列;

如果VAR中保存的为有符号数,则再编写程序实现将其按递减关系排列。

解:VAR DW 1236,-432,3900

XOR SI,,SI

MOV AX,VAR[SI]

CMP AX, VAR[SI+2]

JAE L1

XCHG AX, VAR[SI+2]

L1:

CMP AX, VAR[SI+4]

JAE L2

XCHG AX, VAR[SI+4]

L2:

MOV VAR[SI], AX

MOV AX,VAR[SI+2]

CMP AX, VAR[SI+4]

JAE L3

XCHG AX, VAR[SI+4]

L3:

MOV VAR[SI+2], AX

4. 编写程序段实现将AL和BL中的每一位依次交叉,得到的16位字保存在DX中,例

如(AL)=01100101B,(BL)=11011010B,则得到的(DX)=10110110 10011001B。

解:利用移位指令完成。

L1:

XOR DX,DX

MOV CX,8

SHR AL,1

RCR DX,1


本文标签: 实现 保存 传送 顺序