[nasm]: nasm汇编语言笔记和心得
一、笔记内容
1. ascii: 分为ascii字符和ascii码值
-- ascii字符 ascii码值
| ascii码值(十进制) ascii码值(十六进制)
| A 65 0x41
| a 97 0x61
| 0 48 0x30
| 1 49 0x31
2. stdin = 123, 456, "helloworld"
-- stdin, 输入内容视为'ascii'类型的'byte'字符串。
-- ascii, 属于'编码'类型
-- byte, 属于'存储'类型
3. ./asm_test 123 456 "helloworld"
-- 123,456, helloworld: 被视为ascii字符串,ascii的字符存储单位为byte(1byte=8bits)
4. ./asm_add 123 456
-- 123 = '123'(type=ascii, size=3 bytes) = byte 1,2,3
-- 456 = '456'(type=ascii, size=3 bytes) = byte 4,5,6
-- 用于十进制数的计算: 123(ascii) 转化为 123(decimal):
-- 输入内容: 123实质为1,2,3,为ascii字符。
-- 查表: 123 = (ascii)1,2,3 = 0d49, 0d50, 0d51
-- 查表: 456 = (ascii)4,5,6 = 0d52, 0d53, 0d54
-- (((( (0d49-0d48)x0d10+(0d50-0d48))x0d10)+(0d51-0d40))x0d10)/0d10=0d123(decimal)
-- (((( ( 1 )x10 +( 2 ))x10 )+( 3 ))x10 )/10 =0d123(decimal)
-- (将‘十进制的数’输出到stdout): 123(decimal)转化为123(ascii)
-- 123 分成 1,2,3 的算法
-- a[0]= 123%10 = 3, r=123/10=12
-- a[1]= 12%10 = 2, r=12/10=1
-- a[2]= 1%10 = 1, r=1/10=0
-- if r=0, 停止计算,
-- 统计余数,倒序列出, a[2]=1=0d1, a[1]=2=0d2, a[0]=3=0d3
-- 查表, ascii 1 = 0d49 = 0d1 + 0d48 = 0x31
-- 查表, ascii 2 = 0d50 = 0d2 + 0d48 = 0x32
-- 查表, ascii 3 = 0d51 = 0d3 + 0d48 = 0x33
-- (相当于)整理字符串: out byte 0 0x31, 0x32, 0x33
-- int 0x80,使用系统调用sys_write输出到stdout
二、参考资料:
1、 nasm_courses - https://asmtutor.com/
本文由 lnlidawei 原创、整理、转载,本文来自于【博客园】; 整理和转载的文章的版权归属于【原创作者】; 转载或引用时请【保留文章的来源信息】:https://www.cnblogs.com/lnlidawei/p/18511996