编辑: 于世美 2019-07-03

This program is to chang a radix of sixteen into that of two ;

Programmer: ;

Date:2005.11.4 .model small .data opand DB

4 DUP(?) ;

开辟存储空间 error DB '

Please input the right radix of sixteen$'

.code main PROC FAR start: MOV AX,@data ;

数据段地址赋给AX MOV DS,AX ;

数据段地址赋给DS again: MOV SI,0 ;

清空SI next: MOV AH,01h ;

带回显字符输入功能号赋给AH INT 21h CMP AL,30h ;

输入数字与0比较 JB print_error ;

小于则输出错误信息 CMP AL,39h ;

输入数字与9比较 JA other ;

大于则跳转到other JMP store ;

小于等于则存储 other: CMP AL,61h ;

与字符'

a'

比较 JB print_error ;

小于则输出错误信息 CMP AL,66h ;

与字符'

f'

比较 JA print_error ;

大于则输出错误信息 SUB AL,07h ;

小于等于则减7,使后四位成为9以上十六进制数的二进制表示 store: MOV opand[SI],AL ;

把AL中的数赋给开辟的数据空间 INC SI ;

SI自增 CMP SI,4 ;

SI做为循环控制变量,因只输入4位十六进制数 JB next ;

小于则继续输入 CALL erlf ;

换行 XOR SI,SI ;

SI清空 loop1: MOV CH,0 MOV CL,4 SHL opand[SI],CL ;

opand[SI]中的数据逻辑左移4位,把第四位数移到高4 ;

位上来 loop2: SHL opand[SI],1 ;

逻辑左移一位,将一位二进制数移出 JNC print_zero ;

如果是0则跳转到输出'

0'

的模块 MOV DL,31h ;

如果是1,则把字符'

1'

的ASCII码赋给DL JMP print ;

进行输出操作 print_zero: MOV DL,30h ;

把字符'

0'

的ASCII码赋给DL print: MOV AH,02h ;

赋AH字符输出功能号 INT 21h INC CH CMP CH,4 JB loop2 INC SI CMP SI,4 MOV AH,02h MOV DL,20h INT 21h JB loop1 JMP exit print_error: CALL erlf MOV AH,09h ;

赋AH字符串输出功能号 MOV DX,OFFSET error ;

把字符串的偏移地址赋给DX INT 21h CALL erlf JMP again exit: MOV AH,07h INT 21h MOV AX,4c00h INT 21h main ENDP erlf PROC NEAR MOV AH,02h MOV DL,0ah ;

赋换行ASCII码INT 21h MOV AH,02h MOV DL,0dh ;

赋回车ASCII码INT 21h RET erlf ENDP END start 实验总结 通过这个实验,我对汇编指令的使用有了更进一步的了解,同时也进一步熟知了汇编程序应该怎样去思考,应该怎样合理的使用仅有的几个寄存器.在对数据段中数据的寻址过程中,对指令中的寻址方式有了更清楚的了解,知道对存储器中不同存放方式的数据应该采取怎样的寻址方式.在这个实验中,我使用的是精简段定义,了解了汇编程序另外一种书写形式,同时还使用了子程序,初步了解了如何在主程序中调用子程序. 该程序逻辑上的思考量不大,十六进制转换成二进制,只要将一位十六进制数用四位二进制数输出即可.难点在于如何完成汇编程序的输入和输入功能,最主要的是要清楚从键盘输入的数不是数值型的而是字符型的,存入的编码是ASCII码,而不是其对应的二进制数码.因而存储时需要把ASCII码转换成相对应的数码,然后再进行存储.而输出时也要进行转换,不要把其数码直接输出,而是要转换成其相对应的ASCII码后,再进行输出操作. 实验三 实验目的 初步了解如何实现程序的调用 了解如何构造程序的模块化 实验内容和分析 从键盘输入一串字符,通过程序计算出其中非数值字符的个数. 在程序中开辟一个缓冲区,用来存储从键盘输入的一串字符,每一串字符以字符'

$'

做为结束符.若按回车键,则接着输入下一个字符串,若按esc键,则结束输入,程序转入统计阶段,此时主程序将调用统计子程序,对统计输入的字符串中的非数值字符的个数,并将非字符个数打印到显示器输出. 程序代码 .model small .data buffer db

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题