河北工业大学汇编实验三实验三 算术运算与代码转换程序设计 计 102 一、实验目的 1)掌握算术运算程序的设计方法。 2)掌握代码转换程序的设计方法。 3)进一步掌握各种程序结构。 4)熟练掌握和使用用 DEBUG 调试程序。 二、实验内容 1)编制两个多字节整数加法和减法程序,并将结果按十六进制形式显示在屏幕上。 2)编制程序实现二进制定点数与十进制数的 ASCII 码串之间转换,并将结果显示在屏幕上。 3)编写程序计算从键盘输入两个不超过四位的十进制数的和、差、积、商,并以十进制形式输出。 4)写程序把从键盘输入的四位十六进制数转换为压缩的 BCD 码,并显示输出。 5)编写一通用过程用来将十进制数(从键盘输入)转换为 P(从键盘输入)进制数。 三、实验设备 PC 机一台 四、实验步骤 1) 按程序流程图编制实验程序。 2) 输入源程序。 3) 汇编、连接程序,执行程序,检查结果。 4) 程序的执行可用 DEBUG 的 G命令,也可用 T 命令单步跟踪执行。 5) 用 D 命令检查执行结果。 五、实验源程序 1)DATA SEGMENT A DB 82H,34H,56H,78H,2AH,0BCH,0EFH,00H B DB 34H,56H,78H,9AH,0BCH,0EFH,16H LENB EQU $-B LEN2 EQU (B-A)*2 RES DB LEN2 DUP('?'),'$' DATA ENDS STACK SEGMENT PARA STACK DW 20 DUP (?) STACK ENDS CODE SEGMENT ASSUME DS:DATA,CS:CODE,SS:STACK START: MOV AX,DATA MOV DS,AX;多字节相加 MOV SI,0 CLC MOV CX,LENB MOV AL,A[SI] LOP1: ADC AL,B[SI] MOV A[SI],AL INC SI LOOP LOP1 ADC BYTE PTR A[SI],0;输出 MOV SI,0 ADD SI,LENB MOV DI,0 MOV CX,LENB+1 PUSH CX LOP2: MOV AL,A[SI];高位转换 MOV BL,AL MOV CL,4 SHR BL,CL CMP BL,0AH JB NEXT1 ADD BL,07H NEXT1: ADD BL,30H MOV RES[DI],BL INC DI;低位转换 MOV BL,AL AND BL,0FH CMP BL,0AH JB NEXT2 ADD BL,07H NEXT2: ADD BL,30H MOV RES[DI],BL INC DI DEC SI POP CX LOOP LOP2 MOV AH,09H MOV DX,OFFSET RES INT 21H MOV AH,4CH INT 21H CODE ENDS END START 3).MODEL SMALL CODE SEGMENT ASSUME CS:CODE,DS:CODE CR EQU 000DH LF EQU 000AH KBBACK EQU 0008H ; ------------------------------------- ; 功能:显示指定地址(STR_ADDR)的字符串 ; 入口: ; STR_ADDR=字符串地址(要求在数据段) ; 用法: OUTPUT STR_ADDR ; 用法举例:OUTPUT PROMPTSTR OUTPUT MACRO STR_ADDR LEA DX,STR_ADDR MOV AH,9 INT 21H ENDM ; ------------------------------------- ; 功能:输出一个字符 ; 入口:DL=要显示的字符 OUTPUT_CHR PROC NEAR PUSH AX MOV AH,02H INT 21H POP AX RET OUTPUT_CHR ENDP ; ------------------------------------- ; 功能:输出回车换行 OUTPUT_CTLF PROC NEAR PUSH AX PUSH DX MOV AH,02H MOV DL,0DH INT 21H MOV DL,0AH INT 21H POP DX POP AX RET OUTPUT_CTLF ENDP