5个字节求和放AX中
注意 字节8位 AX是16位 8位进位,会吞掉AH的内容,所以要在后面加上ADC进位的
MOV AX,0 ;MOV AH,0
CLD ; CF = 0
MOV AL,12H
MOV BL,34H
ADD AL,BL ; AL = AL+BL
ADC AH,0 ;ADD AH + 0 + CF
ADD AL,56H;
ADC AH,0
ADD AL,78H
ADC AH,0
ADD AL,9AH
ADC AH,0
;只要有进位CF=1,AH就加上
; AX = 01AEH
注意加法,8位 结果保存在 AL中 16位保存在AX中?
五个序数求和
1+2+3+4+5 结果放到AL中
简单的
MOV AX,0
MOV AL,1
MOV BL,2
ADD AL,BL ;AL = 1+2
INC BL ;BL = 3
ADD AL,BL ;AL = 3+3
INC BL ;4
ADD AL,BL
INC BL ;5
ADD AL,BL
循环版
MOV AX,0
MOV AL,1
MOV BL,2
MOV CX,4
L1:
ADD AL,BL ;AL = 1+2
INC BL ;BL = 3
LOOP L1
4次循环,因为 在LOOP前,已经加过一次了
内存单元BUF中5个数求和
假设内存单元中
DATA SEGMENT
BUF DB 12H,56H,98H,69H,9BH
DATA ENDS
CODE SEGMENT
ASSUME DS:DATA,CS:CODE
START:
LEA BX,BUF
MOV AX,0
MOV AL,[BX]
INC BX ;MOV AL,[BX+1] 56H
ADD AL,[BX]
INC BX ; 98H
ADD AL,[BX];
INC BX ; 69H
ADD AL,[BX];
INC BX ; 9BH
ADD AL,[BX]
CODE ENDS
END START
程序有点问题,思路大概是这样,
判断AL中是否为 奇偶
这里我们用到JZ 和 JNZ 以及 TEST指令 与
注意要分清楚 JNZ 是ZF=0 说明结果不为0
JZ说明 ZF=1 跳转 结果为0
最后一位 D0位 , 1表示奇地址 0表示偶地址,
和1与,如果是1就是奇地址 如果是0就是偶地址
TEST AL,01H
JNZ L1:
....
....
L1: