汇编作业(2006.5.19)

原创 2006年05月20日 12:22:00

DATA SEGMENT
 X DB 5, ?, 5 DUP(0)
 XX DW 0    ; 将X完成拼接操作存入XX (将XX当作要被转换的数据处理)
 Y DB 5 DUP(0)   ; 存转换后的10进制数
 STR1 DB 'INPUT 4 DIGITS: $'
 STR2 DB 0AH, 0DH, 'THE BCD CODE IS: $'  ; 实际打印出来的是BCD码表示的10进制数
 STR3 DB 0AH, 0DH, 'INPUT ERROR! TRY AGAIN! $'
DATA ENDS

STACK SEGMENT PARA STACK
 DW 20H DUP(0)
STACK ENDS

CODE SEGMENT
 ASSUME CS:CODE, DS:DATA, SS:STACK
BEGIN: MOV AX, DATA
 MOV DS, AX
 MOV DX, OFFSET STR1
 MOV AH, 09H
 INT 21H
 MOV DX, OFFSET X
 MOV AH, 0AH
 INT 21H
 MOV DI, OFFSET X
 INC DI
 MOV BL, [DI]
 CMP BL, 4   ; 检测输入是否为4位
 JE NEXT
 JMP ERROR
NEXT: INC DI
 PUSH DI
 CALL TES   ; 检测输入有效性并转化ASCII为数字
 POP DI
 CALL CHANGE   ; 将X按位拼接到XX中,使之成为长度为一个字的16进制数
 MOV DX, XX
 MOV DI, OFFSET Y
 MOV CX, 0H   ; 存放10进制数的位数
LOP2: MOV AX, DX   ; 被除数放入AX
 MOV DX, 0H  
 MOV BX, 10
 DIV BX    ; 除以10,余数在DX中,商在AX中
 XCHG AX, DX   ; 交换余数和商的位置
 ADD AL, 30H   ; 把余数转化为ASCII码
 MOV [DI], AL   ; 存余数
 INC DI
 INC CX    ; 位数计数器加1
 CMP DX, 0H    ; 如果商为0,则输出
 JNZ LOP2
 
 MOV DX, OFFSET STR2
 MOV AH, 09H
 INT 21H
LOP3: DEC DI    ; CX(10进制数的位数)控制此循环
 MOV DL, [DI]   ; 依次输出
 MOV AH, 02H
 INT 21H
 LOOP LOP3
 MOV DL, 'D'
 INT 21H
 JMP OVER

ERROR: MOV DX, OFFSET STR3
 MOV AH, 09H
 INT 21H
 
OVER: MOV AH, 4CH
 INT 21H
 
TES PROC    ; 检测与转换输入的子程序
 MOV CX, 4
LOP0:  MOV AX, 0
  MOV AL, [DI]      ; 判断输入的不同情况
  CMP AL, '0'
  JB ERROR
 CMP AL, 'f'
  JA ERROR
  CMP AL, '9'
  JBE PART1 
 CMP AL, 'A'
  JB ERROR
  CMP AL, 'F'
  JBE PART2
  CMP AL, 'a'
  JB ERROR
  CMP AL, 'f'
  JBE PART2

PART1:  AND AL, 0FH      ; 开始转化为数值
  MOV [DI], AL      ; 替换原始ASCII码
  JMP CONTINUE1 
PART2:  SUB AL, 07H
  JMP PART1

CONTINUE1:  INC DI
  LOOP LOP0
 RET
TES ENDP

CHANGE PROC
 MOV BX, 0
 MOV CX, 3   ; 总共移位3次,或运算拼接4次
LOP1: PUSH CX
 OR BL, [DI]   
 MOV CL, 4
 SHL BX, CL   ; 左移4个2进制位(1个16进制位)
 INC DI
 POP CX
 LOOP LOP1
 OR BL, [DI]   ; 多进行或运算一次
 
QUIT: MOV XX, BX   ; 拼接完成存入BX
 RET
CHANGE ENDP

CODE ENDS
END BEGIN

汇编大作业(清屏和显示特定字符和拷贝自己)汇编学习记录

收集到一下的必须资料 - 显示缓冲区80*25 - 一个字符占用两个字节,分别放ASCII码和 assume cs:code code segment start: mov ax,0b80...
  • lxx_nico
  • lxx_nico
  • 2015年09月18日 18:44
  • 1167

计算机组成第一次互评作业:MIPS汇编程序设计

第一题:用系统功能调用实现简单输入输出利用系统功能调用从键盘输入,转换后在屏幕上显示,具体要求如下: 如果输入的是字母(A~Z,区分大小写)或数字(0~9),则将其转换成对应的英文单词后在屏幕上显示,...
  • zqm201
  • zqm201
  • 2015年04月08日 16:56
  • 2601

数字图像处理专业英语词汇

FFT 滤波器 FFT filters VGA 调色板和许多其他参数 VGA palette and many others 按名称排序 sort by name 包括角度和刻度 i...
  • liu_guanzhang
  • liu_guanzhang
  • 2014年03月07日 14:30
  • 1659

FZU汇编作业 实验(五)

1、上机题目:将从键盘输入的N个无符号数保存到数组DAT ,找出N个无符号数中的偶数存放到数组P,统计并在终端上显示数组P的数据个数no。              DAT  DW   X1,……,X...
  • u013444268
  • u013444268
  • 2014年04月17日 17:09
  • 865

汇编作业

蜂鸣器汇编: .global _start_start:LDR R0,=0XE02000A0LDR R1,[R0]BIC R1,R1,#(0XF)ORR R1,R1,#(0X1)STR R1,[R0]...
  • Mce_19
  • Mce_19
  • 2016年11月23日 20:55
  • 178

汇编_8086作业

D:/www_local/asm/test/test10.asmassume cs:codesg,ds:datasg datasg segment db 'welcome to masm!',0 ;...
  • u012576807
  • u012576807
  • 2014年04月02日 14:02
  • 911

反汇编小作业

0x00 问题描述给定一个 bin 文件,生成对应的 asm 文件。 这里我们只写了 MOV 指令的反汇编代码,具体过程如下:0x01 生成 bin 文件输入来自 bin 文件,这里为了方便,我们用...
  • qq_20480611
  • qq_20480611
  • 2016年05月01日 11:47
  • 461

微机原理与接口技术作业汇编代码

  • 2015年08月26日 07:03
  • 3KB
  • 下载

汇编作业 宏指令运用实验

  • 2011年11月08日 13:54
  • 472KB
  • 下载

看8086汇编 书上的一个小作业 键盘中断例程编写

;任务:在屏幕中间依次显示‘a'~’z' 并可以让人看清。在显示的过程中 按下Esc后,改变显示的颜色 assume cs:code ;栈 stack segment db 128 dup (0...
  • zhb_51666
  • zhb_51666
  • 2014年10月22日 16:19
  • 1084
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:汇编作业(2006.5.19)
举报原因:
原因补充:

(最多只允许输入30个字)