汇编
客院载论
I'm a coder!!
展开
-
汇编实现:将用户输入的两位十进制数转成对应十六进制数输出,直到用户输入$,才退出
assume cs:code,ds:datadata segment x db 2 dup(0) mess1 db 0dh,0ah,'decimal = $' mess2 db 0dh,0ah,'HEX = $' hex db '0123456789ABCDEF' data endscode segmentstart: mov ax,data mov ds,ax let0:;获取用户的输入 mov x,0 mov x+1,0 mov si,0 lea dx,mess1原创 2021-01-04 10:57:57 · 636 阅读 · 0 评论 -
汇编实现排序——冒泡排序
assume cs:codesgdata segment a dw 100, 30, 78, 99, 15, -1, 66, 54, 189, 256data endscodesg segmentstart: # 指定地址段 mov ax,data mov ds,ax # 将a的地址的送给bx开始遍历 lea bx,a mov cx,10 out: push cx dec cx comp: mov ax,[bx] mov dx,[bx+1] cmp原创 2021-01-03 15:59:28 · 560 阅读 · 1 评论 -
不停的获取用户的输入,直到遇到$,并将所有的小写转成大写
assume cs:codeseg,ds:datadata segment buffer db 40 dup(?)data endscodeseg segmentstart: mov ax,data mov ds,ax lea bx,buffer mov ah,01h# 死循环,用于判断用户的输入input: int 21h # 每一次输入都和“$”进行比较,如果相同,就跳出循环 cmp al,'$' je output call change mov [bx],al原创 2021-01-03 15:59:01 · 143 阅读 · 0 评论 -
汇编实现斐波那契(使用寄存器传递参数+堆栈传递参数)
assume cs:codesg,ds:datadata segment fiblist dw 1,1,18 dup(?) n dw 20data endscodesg segmentstart: # 将数据段的地址的传递给ds mov ax,data mov ds,ax # 将的fiblist的地址传给si,用来遍历 lea si,fiblist # 根据传入的斐波那契的数来确定循环次数 mov cx,n # 前两项不需要进行计算 sub cx,2one: # 将后项给原创 2020-12-28 21:44:46 · 2135 阅读 · 0 评论 -
求取用户输入的字母的前缀和后缀(带合法性的判定)
assume cs:codesg,ds:datadata segment # 提示信息 prompt db 0dh,0ah,'Input a lowercase letter:$' # 错误处理信息 Err db 0dh,0ah,'Input Error.$' # 前缀 buf db 0dh,0ah,'prev:' prev db 20h # 后缀 db 0dh,0ah,'Succ:' succ db 20h db 0dh,0ah,'$'data endscodesg segm原创 2020-12-28 21:22:09 · 266 阅读 · 0 评论 -
从键盘上输入不大于65535的十进制数,转换为二进制数
assume cs:codesg,ds:datadata segment buffer db 6,?,6 dup(?) c10 dw 10 x dw ?data endscodesg segmentstart: mov ax,data mov ds,ax # 将目标缓冲区的地址送到dx中 lea dx,buffer # 调用获取一个字符串的指令 mov ah,0ah # 获取字符串的输入 int 21h # 将累加器清零 mov dx,0 # 将循环次数移动到cx中原创 2020-12-28 20:31:25 · 967 阅读 · 0 评论 -
使用字符串读入的方式,将的用户的输入的字符串完全读入,并计算前五个数的累加和
assume cs:codesg,ds:datadata segment sum db ? buffer db 6,?,6 dup(?)data endscodesg segmentstart: mov ax,data mov ds,ax # 将目标缓冲区的地址送到dx中 lea dx,buffer # 调用获取一个字符串的指令 mov ah,0ah # 获取字符串的输入 int 21h # 将累加器清零 mov dx,0 # 将循环次数移动到cx中 mov cx,0原创 2020-12-28 16:11:46 · 197 阅读 · 0 评论 -
从键盘输入5个数字,求他们的和,存入SUM
assume cs:codesg,ds:datadata segment sum db 0data endscodesg segmentstart: mov ax,data mov ds,ax # 设定循环次数 mov cx,5 # 将需要输出的数字,移动到al中 mov bx,0 mov ah,01h one: # 每一次都将结果保存在al中 int 21h # 将获取的数字进行处理 and al,0fh # 将al累加到寄存器 add bl,al loop o原创 2020-12-28 15:48:02 · 1691 阅读 · 0 评论 -
显示器上使用十六进制的格式输出无符号自变量X的值
assume cs:codesg,ds:datadata segment x dw 0100101010110111b c16 dw 16 hex db '0123456789ABCDEF'data endscodesg segmentstart: mov ax,data mov ds,ax # 设定循环次数 mov cx,4 # 将需要输出的数字,移动到al中 mov ax,xone: # 将用来保存余数的高位置为零,每一次都将保存余数的结果置为零,不影响后面的操作 mov原创 2020-12-28 15:22:50 · 373 阅读 · 0 评论 -
在显示器上用十进制格式输出单字节无符号数
assume cs:codesg,ds:datadata segment x db 10110111b c10 db 10data endscodesg segmentstart: mov ax,data mov ds,ax # 设定循环次数 mov cx,3 # 将需要输出的数字,移动到al中 mov al,xone: # 将用来保存余数的高位置为零,每一次都将保存余数的结果置为零,不影响后面的操作 mov ah,0 # 除以10,余数保存在ah中,商保存在al中 div原创 2020-12-28 15:08:39 · 796 阅读 · 0 评论 -
输出保存在内存中的字符串(循环输出每一个的字符和一次性全部输出)
循环输出每一个字符assume cs:codesg,ds:datadata segment string db 0dh,0ah db 'hello!' db 0dh,0ah data endscodesg segmentstart: mov ax,data mov ds,ax lea bx,string mov cx,11 mov ah,02hone: # 循环输出每一个字符 mov dl,[bx] # 调用输出的命令 int 21h #原创 2020-12-28 14:48:52 · 503 阅读 · 0 评论 -
汇编:用户输入两位16进制数,持续输入,直到用户摁esc键退出为止
文章目录描述准备设计思路源码描述十进制和十六进制转换,将键盘输入的两位十进制数,以十六进制数的形式显示在屏幕上。可以多次输入,直到摁下ECS键为止准备dos命令1号,用来获取用户输入;2号,输出用户的数据。数字的变换输入的数字是ASCII码,要将ASCII码转成的实际的数组,减去3030H同时再将的高位数字扩大十倍,加上低位数字数制的转换:将十进制数 除以16,形成十六进制数输入和输出都要要是实际数字,都要转成ASCII码设计思路主程序标号为let0原创 2020-12-25 16:53:22 · 922 阅读 · 0 评论 -
汇编:使用子程序编程实现,将一个全是字母的字符串转换为大写
文章目录使用位运算实现字符串的统一大小写程序源码分析与总结使用位运算实现字符串的统一大小写第三个数字是关键,0大小,1小写如果使用ASCII码值得加减还要注意判断,如果大写就不能加,这种方法更加简便程序源码assume cs:codesgdata segment db 'BasSic' db 'iNfOrMaTiOn' data endscodesg segmentstart: # 指定段地址 mov ax,data mov ds,ax # si源地址指针,指原创 2020-12-25 16:01:36 · 435 阅读 · 0 评论 -
汇编语言:计算data段中的第一组数据的3次方,结果保存在后面一组的dword单元中
文章目录计算立方的子程序整体程序运行结果计算立方的子程序cube: # 将被除数保存进xb中 mov ax,bx # 调用乘法,结果保存在ax和dx中 mul bx mul bx # 返回主程序 ret整体程序assume cs:codesgdata segment dw 1,2,3,4,5,6,7,8 dd 0,0,0,0,0,0,0,0 data endscodesg segmentstart: # 指定段地址 mov ax,data mov ds,ax #原创 2020-12-25 15:40:22 · 1372 阅读 · 1 评论 -
汇编的习题
第一题在下列符号定义语句,ABC的值为:AA DB 1, 2, 3, ‘123’BB DB 0ABC EQU BB - AA A、-1 B、9CH C、0CH D、6正确答案: D 我的答案:A分析:变量名等价于地址,这里是变量相减,就是地址相减。一个字符表示占用一个字节,‘123’占用了三个字节EQU:等值操作,就是=第二题设AX=3762H,CL=5,执行“SHR AX,CL”后,则AX的值为: A、0376H B、0原创 2020-12-07 12:09:41 · 4261 阅读 · 0 评论 -
汇编实验五
实验内容描述编写code段代码,将a段和b段中的数据依次相加,将结果保存在c段中assume cs:code; 编写CODE段代码,将a段和b段中的数据一次相加,将结果保存在c段中a segment db 1,2,3,4,5,6,7,8a endsb segment db 1,2,3,4,5,6,7,8b endsc segment db 0,0,0,0,0,0,0,...原创 2020-05-03 00:00:08 · 481 阅读 · 0 评论 -
寄存器
通用寄存器AX,BX,CX,DX,是四种通用寄存器,用于保存数据,是数据寄存器四种寄存器容量都为两个字节,是十六位寄存器,表示范围0-65535,216上述四种寄存器都可以分割成对应的2个8位寄存器,AX = AH + AL,高八位成为AH寄存器,H是high的意思,低八位是AL寄存器,L是low的意思BX = BH + BLCX = CH + CLDX = DH + DL上述...原创 2020-02-23 21:24:19 · 2264 阅读 · 0 评论 -
汇编预备
二进制与汇编语言的关系计算机是由电驱动的,但是内部各个部件之间的操作,是由二进制的机器指令控制的,CPU统一发布机器指令。CPU中央处理器,将这一串二进制代码0101100101011101B,变成高低电位,进而驱动计算机的运行,仅仅只有CPU可以执行机器指令。那么对应的那串010010101B的二进制代码又表示什么?在上述的debug中:冒号的左边都是对应十六进制073F...原创 2020-02-22 22:41:48 · 535 阅读 · 0 评论