河北工业大学汇编实验三

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验三算术运算与代码转换程序设计

计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 D

B 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('?'),'$'

DA TA ENDS

STACK SEGMENT PARA STACK

DW 20 DUP (?)

STACK ENDS

CODE SEGMENT

ASSUME DS:DATA,CS:CODE,SS:STACK

START: MOV AX,DA TA

MOV DS,AX;多字节相加

MOV SI,0

CLC

MOV CX,LENB

LOP1: MOV AL,A[SI]

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

LOP2: PUSH CX

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

; 功能:取光标位置

; 入口:无

; 出口:DH=行号,DL=列号

GETCURSOR PROC NEAR

PUSH AX

PUSH BX

PUSH CX

XOR BX,BX

MOV AH,3

INT 10H

MOV CURSOR_ROW,DH

MOV CURSOR_COL,DL

POP CX

POP BX

POP AX

RET

CURSOR_ROW DB ?

CURSOR_COL DB ?

GETCURSOR ENDP

; -------------------------------------; 功能:置光标位置

; 入口:CURSOR_ROW=行坐标; CURSOR_COL: 列坐标)

SETCURSOR PROC NEAR

相关文档
最新文档