2024年6月11日发(作者:)
第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


发布评论