1. 題目:用**形式顯示ascii字元
2.要求:按15行×16列的**形式顯示ascii碼為10h-100h的所有字元,即以行為主的順序及ascii碼遞增的次序依次顯示對應的字元。每16個字元為一行,每行中的相鄰兩個字元之間用空白符或空格符(ascii碼為0或20h)隔開
**如下:
1;example assembly language program --2;
author: karllen3;
date: revised 05/2014
45 .386
6.model flat
78 exitprocess proto near32 stdcall, dwexitcode:
dword
910 include io.h ;
header file for input/output
1112 cr equ 0dh ;
carriage return character
13 lf equ 0ah ;
line feed
1415 .stack 4096
;reserve 4096-byte stack
1617 .data ;
reserve storage for data
1819 promot byte "
the program is to print ascii from 10h to 100h
",cr,lf,0
20line dword ?
21row dword ?
22 ccf byte "
",023 crlf byte cr,lf,0
24 char byte 1
dup(?)
2526 .code ;
start of main program code
27_start:
28output promot
29mov row,0
30mov line,0
31mov
char,0fh
32dofirstwhile:
33inc
line
34cmp line,15
35jg
endfirstwhile
36mov row,0
37dosecondwhile:
38inc
row39
cmp row,16
40jg
endsecondwhile
41add char,1
42output char
43output ccf
44jmp
dosecondwhile
45endsecondwhile:
46output crlf
47jmp
dofirstwhile
48endfirstwhile:
4950 invoke exitprocess, 0
;exit with return code 0
5152 public _start ;
make entry point public
5354 end ;
end of source code
執行結果檢視
組合語言 AT T組合語言
這兩天的pwn題環境都是在linux中,採用的組合語言是 at t 格式。之前學習的是intel格式的8086彙編,今天學習了下at t組合語言。基於x86 架構的處理器所使用的彙編指令一般有兩種格式 操作intel格式at t格式 暫存器命名 push eax pushl eax 常數 立即運算元...
組合語言 直接定址表
assume cs code code segment a dw 1,2 3,4 5,6 7,8 a代表了code段的首位址code 00,由於dw,也代表了a開始的這一小段記憶體都是按照字單元儲存的。從code 0 code 15 也就是,a 0 a 15 a si 代表了從code 00開始的偏...
組合語言 直接定址表
assume cs code code segment 從code 0 code 15 也就是,a 0 a 15 a si 代表了從code 00開始的偏移量為si的記憶體單元。此記憶體單元是字單元,故si的偏移量是2個位元組。剩下的空間都是真正的cpu執行的 了。start mov si,0 mo...