汇编语言程序设计知识点

MOV CL,TEMP+2 MOV BL,TEMP+3 MOV AL,TEMP+4

MAIN ENDP CODE ENDS

END START

8、已定义了两个整数变量A、B,试编写程序完成下列功能:1、若两个数中有一个是奇数,则将奇数存放在A中,偶数存放在B中。2、若两个数均为奇数,则将两数均加1后存回原变量。

DATAREA SEGMENT

A DW ? B DW ? DATAREA ENDS CSEG SEGMENT MAIN PROC FAR

ASSUME CS:CSEG,DS:DATAREA START:

PUSH DS SUB AX,AX PUSH AX

MOV AX,DATAREA MOV DS,AX BEGIN:

MOV AX,A MOV BX,B XOR AX,BX ;AX,BX异或

TEST AX,0001H ;测试最低位,0则两数同奇偶 JZ CLASS ;为0则转至CLASS

TEST BX,0001H ;若最低位为0则为偶数,否则为奇数 JZ EXIT

;为0则转至EXIT

XCHG BX,A ;交换BX/A中值,即A中存放奇数 MOV B,BX

;将BX中数送入B中,B中存放偶数

JMP EXIT CLASS:

TEST BX,0001H ;测试BX是否为奇数 JZ EXIT ;不是则转至EXIT

INC B ;否则B自增1 INC A

;A自增1

EXIT:

9

RET MAIN ENDP CSEG ENDS

END START

9、判断寄存器AH和AL中第3位是否相同,如相同,AH置0,否则AH置全1。 答:XOR AH,AL

AND AH,40H JNZ ONE JMP NEXT ONE:MOV AH,0FFH NEXT:……

10、实现下列算式:W=X+Y+36-Z。设X、Y、Z、W均为双字长数据,各自的低十六位数和高十六位数分别存放在X、X+2、Y、Y+2、Z、Z+2的存储单元中,结果的低十六位字和高十六位字分别存放在W和W+2两个单元中。 答:

DATA SEGMENT

X DD Y DD Z DD W DD

;AH置全1

MOV AH,0

;异或判定是否相同,结果存放在AH中 ;将除第三位外的所有位置0 ;若不为0,即不相等,转至ONE ;否则AH置0

DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA MOV DS,AX

MOV AX,X ADD AX,Y MOV BX,X+2 ADC BX,Y+2 ADD AX,36 ADC BX,0 SUB AX,Z SBB BX,Z+2 MOV W,AX MOV W+2,BX END START START:

CODE ENDS

11、写出执行以下计算的指令序列,其中U、V、W和Z均为存放16位带符号数单元的地址。

10

联系客服:779662525#qq.com(#替换为@)