河北工业大学汇编语言实验设计
1)编制两个多字节整数加法和减法程序,并将结果按十六进制形式显示在屏幕上。
2)编制程序实现二进制定点数与十进制数的ASCII码串之间转换,并将结果显示在屏幕上。
3)编写程序计算从键盘输入两个不超过四位的十进制数的和、差、积、商,并以十进制形式输出。
4)写程序把从键盘输入的四位十六进制数转换为压缩的BCD码,并显示输出。
5)编写一通用过程用来将十进制数(从键盘输入)转换为P(从键盘输入)进制数。 三、源程序 EXAM3-2
BTODA PROC PUSH DS PUSH CS POP DS PUSH DI PUSH CX PUSH BX PUSH DX CLD LEA BX,CTAB BTODA1: MOV CX,[BX] XOR DX,DX DIV CX ADD AL,30H STOSB MOV AX,DX ADD BX,2 CMP CX,10 JNZ BTODA1 ADD AL,30H STOSB POP DX
河北工业大学汇编语言实验设计
POP BX POP CX POP DI POP DS RET
CTAB DW 10000,1000,100,10 BTODA ENDP
EXAM3-5
DATA SEGMENT
STRING1 DB 'INPUT YOUR M=','$' STRING2 DB 'INPUT YOUR P=','$' RE DB 8 DUP(30H) DATA ENDS
STACK1 SEGMENT STACK
DW 60H DUP(0) STACK1 ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK1 START:MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET STRING1 MOV AH,09H INT 21H
MOV AH,01H INT 21H
AND AX,0000FH MOV DL,10 MUL DL MOV BX,AX MOV AH,01H INT 21H
AND AL,0FH CLC
ADD BL,AL ADC BH,0 MOV DL,0AH MOV AH,02H INT 21H
MOV DL,0DH INT 21H
MOV DX,OFFSET STRING2 MOV AH,09H INT 21H
河北工业大学汇编语言实验设计
MOV AH,01H INT 21H MOV DH,AL SUB DH,30H MOV DL,0AH MOV AH,02H INT 21H
MOV DL,0DH INT 21H MOV AX,BX MOV BX,0001H
MOV DI,OFFSET RE LOP1:
DIV DH
ADD AH,30H MOV [DI],AH CBW
ADD DI,BX CMP AL,0 JA LOP1
MOV CX,08H
MOV DI,OFFSET RE CLC
ADC DI,CX LOP2:
SUB DI,BX MOV DL,[DI] MOV AH,02H INT 21H LOOP LOP2 MOV AH,4CH INT 21H CODE ENDS END START
执行程序EXAM3-5·EXE,屏幕上显示结果: INPUT YOUR M=5 INPUT YOUR P=6 00000143
实验五 输入输出程序设计
一、实验目的
河北工业大学汇编语言实验设计
1) 掌握输入输出程序的编写方法。 2) 熟悉系统功能调用的方法。 3) 熟悉动画程序的编写方法。 二、实验内容
1)在CRT上每隔一秒连续显示字符0-9。 编程提示
为了使输出的字符之间有空格,在每一个循环中输出一个0-9的字符和一个空格。为了输出0-9,置寄存器BL初值为0,每循环一次使其增量。为了保证输出是十进制,增量后用DAA调整指令。由于输出为一位十进制数,用AND 0FH指令屏蔽高4位。
2)用系统功能调用将‘HELLO’由键盘输入,再从屏幕输出‘***HELLO***’。
3)编制在屏幕上画线的子程序,调用该子程序画一矩形。
4)编制字母下落一行的子程序,调用该子程序使字母从屏幕顶部下落到底部。
5)创建一磁盘文件,保存从键盘输入的字符串。
6)编写程序用设置系统时间,首先从键盘以十进制数形式输入时间,然后修改系统时间,并重新以十进制形式显示时间。
7)编写程序将屏幕分割成格状,每一格涂上不同颜色,格数从键盘输入。 8)编写程序在屏幕上显示菜单,输入相应菜单的序号后,选种该菜单项。 三、源程序
EXAM5-1
STACK SEGMENT STACK DB 1024 DUP(0) STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,SS:STACK START: MOV BL, 0 LP: MOV DL, 20H
MOV AH, 2
河北工业大学汇编语言实验设计
INT 21H
MOV AL, BL ADD AL, 0 DAA
AND AL, 0FH MOV BL, AL PUSH BX
OR AL, 30H MOV DL, AL MOV AH, 2 INT 21H
MOV BX, 3E8H
LP2: MOV CX, 176H ;延时1ms LP1: PUSHF
POPF
LOOP LP1 DEC BX JNZ LP2 POP BX INC BL JMP LP
CODE ENDS
END START
执行程序EXAM5-1·EXE,屏幕上依次循环显示一个数字一个空格:
0 1 2 3 4 5 6 7 8 9 ……
EXAM5-2
STACK SEGMENT STACK DB 1024 DUP(0) STACK ENDS DATA SEGMENT
BUFF DB 6,7 DUP(?),‘$’ DATA ENDS
INPUT MACRO BUFE
MOV DX, OFFSET BUFE MOV AH, 0AH INT 21H ENDM
PUTCHAR MACRO CHAR
MOV DL, CHAR MOV AH, 02H INT 21H