DATA 1 DATA 2 DATA 3 DATA 4

  • Slides: 23
Download presentation

DATA 1 DATA 2 DATA 3 DATA 4 DB DW DB DD 30 H

DATA 1 DATA 2 DATA 3 DATA 4 DB DW DB DD 30 H 0240 H,3500 H (-1*3),(16/4) 34567 H 返回 第四章 汇编语言程序设 计   30 H 40 H 02 H 00 H 35 H FDH 04 H 67 H 45 H 03 H 00 H DATA 1 DATA 2 DATA 3 DATA 4

DATA 5 DATA 6 DATA 7 DATA 6 DATA 8 DB ? DW ?

DATA 5 DATA 6 DATA 7 DATA 6 DATA 8 DB ? DW ? DB ‘ABCD’ DW ‘AB’, ’CD’ 返回 第四章 汇编语言程序设 计   ---41 H 42 H 43 H 44 H 42 H 41 H 44 H 43 H DATA 5 DATA 7 DATA 8

DATA 9 DW 2 DUP (?) DATA 10 DB 2 DUP(5, 2 DUP(0)) 返回

DATA 9 DW 2 DUP (?) DATA 10 DB 2 DUP(5, 2 DUP(0)) 返回 第四章 汇编语言程序设 计   ----05 H 00 H 00 H DATA 9 DATA 10

第四章 汇编语言程序设 计   4. 2 顺序结构程序 例1 将一个 2位数压缩的BCD码转换成二进制数. . MODEL SMALL. DATA BCD

第四章 汇编语言程序设 计   4. 2 顺序结构程序 例1 将一个 2位数压缩的BCD码转换成二进制数. . MODEL SMALL. DATA BCD DB 01011001 B BIN DB ?. CODE. STARTUP MOV AL,BCD MOV BL,AL AND BL,0 F H AND AL,0 F 0 H MOV CL,4 ROR AL,CL MOV BH,0 AH MUL BH ADD AL,BL MOV BIN,AL. EXIT END

第四章 汇编语言程序设 计   例2 编程实现将键盘输入的小写字母转换成大写后 输出。 . MODEL SMALL MOV DL,AL. DATA MOV AH,02

第四章 汇编语言程序设 计   例2 编程实现将键盘输入的小写字母转换成大写后 输出。 . MODEL SMALL MOV DL,AL. DATA MOV AH,02 H BLOCK DB ‘ERROR!’,0 DH,0 AH,’$’ INT 21 H. CODE JMP DONE. STARTUP NEXT:LEA DX,BLOCK MOV AH,1 MOV AH,9 INT 21 H CMP AL, ‘a’ DONE:. EXIT JB NEXT END CMP AL, ‘z’ JA NEXT AND AL, 11011111 B

第四章 汇编语言程序设 计   4. 4 循环程序设计 例1 ① MOV CX,COUNT AGAIN: …… LOOP AGAIN

第四章 汇编语言程序设 计   4. 4 循环程序设计 例1 ① MOV CX,COUNT AGAIN: …… LOOP AGAIN ② MOV CL,COUNT AGAIN: …… DEC CL JNZ AGAIN ③ MOV CX,COUNT AGAIN:JCXZ NEXT …… JMP AGAIN NEXT:

第四章 汇编语言程序设 计   例2 在内存BLOCK开始处存放了10个无符号字 节数,从中找出最大值送入MAX单元中。 . MODEL SMALL XCHG AL,[BX]. DATA NEXT:LOOP AGAIN

第四章 汇编语言程序设 计   例2 在内存BLOCK开始处存放了10个无符号字 节数,从中找出最大值送入MAX单元中。 . MODEL SMALL XCHG AL,[BX]. DATA NEXT:LOOP AGAIN BLOCK DB 100,60,20,…… MOV MAX,AL MAX DB ?. EXIT. CODE END. STARTUP MOV CX,9 MOV AL,BLOCK LEA BX,BLOCK AGAIN:INC BX CMP AL,[BX] JAE NEXT

第四章 汇编语言程序设 计   例3 多位十进制数相加: 02233585+03703994,两数在内存中以DATA 1 和DATA 2为首址存入,各分配4个字节单元,以其 8位组合BCD码存入( 低位在前),两数相加结果(组合BCD码)送回DATA 1处。 . MODEL

第四章 汇编语言程序设 计   例3 多位十进制数相加: 02233585+03703994,两数在内存中以DATA 1 和DATA 2为首址存入,各分配4个字节单元,以其 8位组合BCD码存入( 低位在前),两数相加结果(组合BCD码)送回DATA 1处。 . MODEL SMALL. DATA 1 DD 02233585 H DATA 2 DD 03703994 H. CODE. STARTUP LEA SI,DATA 1 LEA DI,DATA 2 CLC MOV CX,4 AGAIN:MOV AL,[SI] ADC AL,[DI] DAA MOV [SI],AL INC SI INC DI LOOP AGAIN. EXIT END

第四章 汇编语言程序设 计   例4 在首地址BLOCK处存放了10个字数据(无 符号数),编程求其和,存入SUM单元。. MODEL SMALL. DATA BLOCK DW 1020 H, 3040

第四章 汇编语言程序设 计   例4 在首地址BLOCK处存放了10个字数据(无 符号数),编程求其和,存入SUM单元。. MODEL SMALL. DATA BLOCK DW 1020 H, 3040 H, … SUM DD ?. CODE. STARTUP MOV CX,10 LEA SI,BLOCK MOV AX,0 MOV DX,0 AGAIN:ADD AX,[SI] ADC DX,0 INC SI LOOP AGAIN MOV SUM,AX MOV SUM+2,DX. EXIT END

第四章 汇编语言程序设 计   例4 方法二. MODEL SMALL. DATA BLOCK DW 1020 H, 3040 H,

第四章 汇编语言程序设 计   例4 方法二. MODEL SMALL. DATA BLOCK DW 1020 H, 3040 H, … SUM DD ?. CODE. STARTUP MOV CX,10 LEA SI,BLOCK MOV EAX,0 CLC AGAIN:MOV BX,[SI] MOVZX EBX,BX ADC EAX,EBX INC SI LOOP AGAIN MOV SUM,EAX. EXIT END

第四章 汇编语言程序设 计   例5 两位十进制数乘法: 25× 80,被乘数和乘数以组合BCD码形式存于 DATA 1和DATA 2两字节单元中,经乘法运算,乘积以组合BCD码形式存入 DATA 3定义的两个内存单元中。. MODEL SMALL.

第四章 汇编语言程序设 计   例5 两位十进制数乘法: 25× 80,被乘数和乘数以组合BCD码形式存于 DATA 1和DATA 2两字节单元中,经乘法运算,乘积以组合BCD码形式存入 DATA 3定义的两个内存单元中。. MODEL SMALL. DATA 1 DB 25 H DATA 2 DB 80 H DATA 3 DW ?. CODE. STARTUP MOV AL,DATA 1 MOV BL,AL AND BL,0 FH AND AL,0 F 0 H MOV CL,4 ROR AL,CL MOV BH,0 AH MUL BH ADD AL,BL MOV CL,AL MOV CH,0 MOV BL,DATA 2 MOV AX,0 CLC AGAIN:ADC AL,BL DAA XCHG AH,AL ADC AL,0 DAA XCHG AH,AL LOOP AGAIN MOV DATA 3,AX. EXIT END

第四章 汇编语言程序设 计   将内存首地址为BLOCK开始的10个带符号 例6 字节数,将其按由大到小的次序排列。. MODEL SMALL. DATA BLOCK DB 66 H, 88

第四章 汇编语言程序设 计   将内存首地址为BLOCK开始的10个带符号 例6 字节数,将其按由大到小的次序排列。. MODEL SMALL. DATA BLOCK DB 66 H, 88 H, 10 H,…. CODE. STARTUP MOV DI,9 LOOP 1:MOV CX,DI MOV BX,0 LOOP 2:MOV AL,BLOCK[BX] CMP AL,BLOCK[BX+1] JGE NEXT XCHG AL,BLOCK[BX+1] MOV BLOCK[BX],AL NEXT:INC BX LOOP 2 DEC DI JNZ LOOP 1. EXIT END

第四章 汇编语言程序设 计   4. 5 子程序设计 4. 5. 1 过程定义 过程名 PROC [TYPE] [USES

第四章 汇编语言程序设 计   4. 5 子程序设计 4. 5. 1 过程定义 过程名 PROC [TYPE] [USES REG] …… RET (或RET n) 过程名 ENDP 其中, TYPE 包括: NEAR FAR USER REG: 要保护的通用寄存器 如 SUB 1 PROC USES AX, BX, CX …… RET 等效于 SUB 1 ENDP SUB 1 PROC PUSH AX PUSH BX PUSH CX …… POP CX POP BX POP AX RET SUB 1 ENDP

第四章 汇编语言程序设 计   例1 输入一个字符,若其ASCII码小于41 H,显示 ‘N’,否则显示‘C’。. MODEL TINY. CODE. STARTUP MOV AH,1 INT

第四章 汇编语言程序设 计   例1 输入一个字符,若其ASCII码小于41 H,显示 ‘N’,否则显示‘C’。. MODEL TINY. CODE. STARTUP MOV AH,1 INT 21 H CMP AL,41 H JB NEXT MOV BL,’C’ JMP P NEXT: MOV BL,’N’ P: CALL DISP. EXIT END DISP PROC MOV DL,BL MOV AH,2 INT 21 H RET DISP ENDP