随笔分类 - 汇编
摘要:1 ;========================================== 2 ;循环程序设计 3 ;判断一个字符串是否出现在另一个字符串中 4 DATAS SEGMENT 5 string1 db "your finger can change the world",0 6 string2 db "finger",0 7 flag db ? ;存在为1 不存在...
阅读全文
摘要:1 ;=============================== 2 ;循环程序设计 3 ;条件转移指令实现 4 ;冒泡排序 5 ;for(int i=0;i;j++){ 7 ; if(array[j]>array[j+1]){ 8 ; exchange(array[j],array[j+1]); 9 ; } 10 ; } ...
阅读全文
摘要:1 ;=============================== 2 ;循环程序设计 3 ;loop指令实现 4 ;冒泡排序 5 ;for(int i=0;i;j++){ 7 ; if(array[j]>array[j+1]){ 8 ; exchange(array[j],array[j+1]); 9 ; } 10 ; } ...
阅读全文
摘要:1 ;=============================== 2 ;循环程序设计 3 ;模拟C语言实现break 与continue 4 DATAS SEGMENT 5 i dw 0 6 sum dw 0 7 DATAS ends 8 CODES SEGMENT 9 ASSUME CS:CODES, DS:DATAS 10 START: 11 ...
阅读全文
摘要:1.loop指令实现 2.条件转移指令
阅读全文
摘要:1 ;功能:16位的2进制数转为5位的10进制数并输出 2 DATAS SEGMENT 3 Num dw 1111100111B ;带转换的二进制数(<=16位 测试用例对应的10进制为999) 4 buffer db 5 dup(0) ;用来保存结果 5 jm dw 10000,1000,100,10,1 ;用于每次循环的除数 6 DATAS ends 7 C...
阅读全文
摘要:;分段函数计算 DATAS SEGMENT X db -1 Y db 3 F db ? DATAS ends CODES SEGMENT ASSUME CS:CODES, DS:DATAS START: mov AX,DATAS mov DS,AX mov ah,x mov al,y cmp a...
阅读全文
摘要:;============================ ;1位16进制数到ASCII码转换 ; { X+30H (0≤X≤9) ;Y= { ; { X+37H (0AH≤X≤0FH) DATAS SEGMENT Num db 9 ASCII db ? DATAS ends CODES SEGMENT ASSUME CS:CODES, DS:DATAS START: ...
阅读全文
摘要:;三个数排序(从大到小) DATAS SEGMENT array db 12,250,123 DATAS ends CODES SEGMENT ASSUME CS:CODES, DS:DATAS START: mov AX,DATAS mov DS,AX mov si,offset array mov al,[s...
阅读全文
摘要:1 ;过滤字符串中的空格 2 DATAS SEGMENT 3 string db ' your finger can change the world0';待测试的字符串0作为结束符 4 DATAS ends 5 6 CODES SEGMENT 7 ASSUME CS:CODES, DS:DATAS 8 START: 9 mov A...
阅读全文
摘要:;统计字符串长度 DATAS SEGMENT string db 'hello world demo0';待计算的字符串以0结尾 DATAS ends CODES SEGMENT ASSUME CS:CODES, DS:DATAS START: mov AX,DATAS mov DS,AX call strlen ;调用s...
阅读全文
摘要:;小写变大写 DATAS SEGMENT DATAS ends CODES SEGMENT ASSUME CS:CODES, DS:DATAS START: mov AX,DATAS mov DS,AX call atA mov ah,4CH int 21h atA proc ;子程序 jmp dnext String ...
阅读全文
摘要:1 ;输出寄存器AX中的内容(子程序) 2 DATAS segment 3 4 DATAS ends 5 CODES segment 6 START: 7 mov AX,DATAS 8 mov DS,AX 9 ;正式代码开始 10 mov AX,1AF4H ;设置需要显示的AX的值 11 call PrintAX ...
阅读全文
摘要:1 DATAS segment 2 Temp db '0000H','$' 3 DATAS ends 4 CODES segment 5 START: 6 mov AX,DATAS 7 mov DS,AX 8 ;正式代码开始 9 mov AX,12ABH ;设置需要显示的AX的值 10 mov si,offset T...
阅读全文
摘要:1 ;===================== 2 ;字符串中大写变小写 3 DATAS segment 4 String db 10, ?, 10 dup(?) ;最多接收10个字符,最后的回车算一个字符 5 DATAS ends 6 7 CODES segment 8 START: 9 mov AX,DATAS 10 mov DS,AX 11 ;...
阅读全文
摘要:1 ;==================================== 2 ; 统计寄存器AX中1 的个数 3 DATAS segment 4 5 DATAS ends 6 7 CODES segment 8 START: 9 mov AX,DATAS 10 mov DS,AX 11 ;正式代码部分 12 mov AX,100111...
阅读全文
摘要:1 ;================================= 2 ; HELLO world 3 DATAS segment 4 string DB 'HELLO World','$' 5 DATAS ends 6 7 CODES segment 8 START: 9 mov ax,DATAS 10 mov ds,ax 11 12 ...
阅读全文
摘要:Tips: LEA指令与MOV指令的区别: ① MOV指令是 数据 传送指令 传送数据 LEA指令是 有效地址 传送指令 取偏移地址 ② MOV OPRD1 OPRD2 OPRD1: 目的操作数(寄存器,存储器,累加器) OPRD2: 源操作数(寄存器,存储器,累加器,立即数) 例如: 注意: 目的
阅读全文