• T:
  • 将BUF开始的10个单元中的二进制数转换成两位十六进制数的ASCII码,在屏幕上显示出来。要求码型转换通过子程序HEXAC实现,在转换过程中,通过子程序DISP实现显示。
  • 思路:
  • Main主调程序,循环调用HEXAC子程序10次
  • HEXAC子程序,将十六进制数,除以16分解成两个独立部分,再利用数据结构堆栈的后进先出的性质来调整顺序,同时进行转码。
  • DISP子程序,起显示作用。
  • 问题:子程序中对栈的使用需要小心,一个子程序push后,在return之前必须有对应的pop,要不然子程序无法返回。

代码如下:

data    segment
message db 'Binary to hexadecimal',0dh,0ah,'Press any key to continue!',0dh,0ah,'$'
buf1 db 4eh,0ch,37h,04h,7dh,60h,21h,33h,44h,55h
buf2 db '00h $'
data ends
code segment
assume cs:code,ds:data
;---------------------------------------------------------------------------------------------------------------------
main proc far
start: mov ax,data
mov ds,ax
lea dx,message
mov ah,
int 21h
mov cx,
loopa:
call HEXAC
loop loopa
exit: mov ah,4ch
int 21h
main endp
;---------------------------------------------------------------------------------------------------------------------
HEXAC proc near ;码型转换子程序
mov al,buf1[si]
push cx
push si
mov si,
xor cx,cx
cbw
loopb:
xor dx,dx
inc cl
mov bx,
div bx ;ax商,dx余
push dx ;余数入栈
cmp ax,
jne loopb
mov buf2[],''
sub si,cx
loopc:
pop dx
cmp dl,
jna change
add dl,
mov buf2[si],dl
jmp next
change: or dl,00110000b
mov buf2[si],dl
next: inc si
loop loopc
pop si
inc si
pop cx
call DISP
ret
HEXAC endp
;---------------------------------------------------------------------------------------------------------------------
DISP proc near ;显示子程序
lea dx,buf2
mov ah,
int 21h
ret
DISP endp
;---------------------------------------------------------------------------------------------------------------------
code ends
end start

assembly x86(nasm)子程序1的更多相关文章

  1. assembly x86(nasm)画三角形等图形的实现(升级版)

    https://www.cnblogs.com/lanclot-/p/10962702.html接上一篇 本来就有放弃的想法,可是有不愿退而求次, 然后大神室友写了一个集海伦公式计算三角形面积, 三点 ...

  2. assembly x86(nasm)修改后的日常

    data segment ENG db 'SUNdayS Coming I Wanna Drive My Car,SUN,SUN$' ;9,3 sun1 db 'SUN' swcount db 0ah ...

  3. assembly x86(nasm)的日常

    cs的日常打卡. data segment ENG db 'SUNdayS Coming I Wanna Drive My Car,SUN,SUN$' ;43,35 sun1 db 'SUN' swc ...

  4. assembly x86(nasm)串比较

    预留字符串口令,输入口令串与预留密码串比较.若匹配则显示“MATCH!CONGRATULATION”,否则显示“NOMATCH!”,并让用户重新输入,程序能对口令进行测试,但测试次数最多3次,若3次输 ...

  5. assembly x86(nasm)画三角形等图形的实现

    参考了一位大佬的博客 https://blog.csdn.net/qq_40298054/article/details/84496944传送门 https://blog.csdn.net/qq_40 ...

  6. assembly x86(nasm)选择排序

    有一个首地址为NUM的N字无序无符号整数数组,编制程序采用选择排序法使该数组中的数按照从小到大的次序排序输出. 选择排序: data segment message db 'This is a pro ...

  7. Ubuntu Desktop 编译 ffmpeg (简略的写写)

    关于ffmpeg FFmpeg是一個自由軟體,可以執行音訊和視訊多種格式的錄影.轉檔.串流功能,包含了libavcodec——這是一個用於多個專案中音訊和視訊的解碼器函式庫,以及libavformat ...

  8. Windows下libjpeg-trubo-1.5.3编译(VS2015)

    简述 https://libjpeg-turbo.org/的网站上是有已经编译好的版本下载的,但是VC下是使用的VC10.0编译的.虽然在VC14.0下也能用,但是我还是需要编译一个VC14.0版本的 ...

  9. 在window平台下,自己DIY编译OpenSSL,Libcurl ,来支持HTTPS传输协议

    1 缘起 原来就了解些libcurl,一直没有机会在项目实际使用libcurl.   恰好最近一个云存储的项目,服务器使用openstack 恰好我负责现在的一个云存储SDK c++版本的开发中. 与 ...

随机推荐

  1. 虚拟化(四):vsphere高可用功能前提-共享存储搭建(使用微软提供的iscsi software target,也可以使用免费开源的openfiler)

    虚拟化(一):虚拟化及vmware产品介绍 虚拟化(二):虚拟化及vmware workstation产品使用 虚拟化(三):vsphere套件的安装注意及使用 虚拟化(四):vsphere高可用功能 ...

  2. 不使用库函数,编写函数int strcmp(char *source, char *dest) 相等返回0,不等返回-1【转】

    本文转载自:http://www.cppblog.com/mmdengwo/archive/2011/04/14/144253.aspx #include <stdio.h>#includ ...

  3. VK Cup 2012 Qualification Round 1 E. Phone Talks —— DP

    题目链接:http://codeforces.com/contest/158/problem/E E. Phone Talks time limit per test 3 seconds memory ...

  4. 【转载】Unity3D的断点调试功能

    原文链接:http://liweizhaolili.blog.163.com/blog/static/162307442013214485190/    断点调试功能可谓是程序员必备的功能了.Unit ...

  5. 使用cygwin注意事项二

    使用cygwin时,一定要区分当前运行的是cygwin下的进程还是windows下的进程,如:使用vim, 假如cygwin下没安装vim, windows下安装了,那么你运行的就是windows下的 ...

  6. js操作本地文件

    只有IE支持js对本地文件操作 其他浏览器都不支持

  7. NMS 原理 了解

    NMS 原理:对于Bounding Box的列表B及其对应的置信度S,采用下面的计算方式.选择具有最大score的检测框M,将其从B集合中移除并加入到最终的检测结果D中.通常将B中剩余检测框中与M的I ...

  8. <正则吃饺子>:关于使用powerDesign连接oracle数据库,导出数据表结构(ER图吧)

    最近做的项目中,没有完整的数据库表结构图(ER图),自己就根据服务器上oracle数据库和powerdesign整理一份,但是存在两个问题:1.没有把数据库表的相关备注弄下来:2.数据库表中的主外键关 ...

  9. 如何在ubuntu下使用windows下的程序(eg: .exe)

    为了在ubutu下安装百度云管家,上网查了下如何在ubuntu 下安装.exe文件,其中遇到一些问题记录如下: 使用的命令: 开始时直接使用的sudo apt-get install wine 在运行 ...

  10. Fuzzy Search

    题意: 考虑模板串B和给定串A,给定K,对于模板串上给定位置j的字符,如果能在给定串上i左右K个字符内找到相同字符,则说可以匹配. 问有多少匹配. 解法: 考虑对于每一种字符分开求. 对于当前字符ch ...